zoukankan      html  css  js  c++  java
  • http请求和响应格式


    HTTP请求格式

    当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:

    •  请求方法 URI协议 版本
    • 请求头(Request Header)
    •  请求正文

    下面是一个HTTP请求的例子:
    GET/sample.jspHTTP/1.1
    Accept:image/gif.image/jpeg,*/*
    Accept-Language:zh-cn
    Connection:Keep-Alive
    Host:localhost
    User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    Accept-Encoding:gzip,deflate

    username=jinqiao&password=1234

    (1) 请求方法URI协议/版本
    请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1
    以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
    根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
    URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。
    (2)请求头(Request Header)
    请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。
    Accept:image/gif.image/jpeg.*/*
    Accept-Language:zh-cn
    Connection:Keep-Alive
    Host:localhost
    User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
    Accept-Encoding:gzip,deflate.
    请求字段分析:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8表示客户端可以接受的内容类型,多个值使用;分号隔开q=0.9 表示权重优先级,*/*表示可以接受任意类型内容;
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3表示客户端可以接受的语言
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64x64;
    浏览器信息,例如使用的是网井的内核, windows64位系统;
    Accept-Encoding: gzip, deflate–>>支持的压缩格式
    Host: localhost:8888====>访问地址
    Connection: keep-alive —>>保持连接 和HTTP1.1版本有关,默认保持3s
    Content-Type: application/x-www-form-urlencoded表单提交时才有可能出现,表示表单的数据类型,使用url编码,url编码 % 16位数
    Content-Length: 7—>post请求 请求体长度
    Upgrade-Insecure-Requests: 1–>>告诉服务器,浏览器可以处理https协议、

    (3)请求正文
    请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
    username=jinqiao&password=1234
    在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

    HTTP响应格式

    HTTP响应也由3个部分构成,分别是:

    • 协议/版本 状态码 描述
    • 响应头(Response Header)
    • 响应正文

    下面是一个HTTP响应的例子:
    HTTP/1.1 200 OK
    Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:23:42 GMT
    Content-Length:112
    Content-Type:text/html
    Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
    Content-Length:112

    <html>
      <head>
      <title>HTTP响应示例<title>
      </head>
      <body>
        Hello HTTP!
      </body>
    </html>


    (1)协议/版本 状态码 描述
    协议版本状态代码描述HTTP响应的第一行类似于HTTP请求的第一行,它表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功):
    HTTP/1.1 200 OK
    (2)响应头

    (Response Header)响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:
    Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:23:42 GMT
    Content-Length:112
    Content-Type:text/html
    Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
    Content-Length:112
    响应头字段分析
    server: Apache-Coyote/1.1—>> 服务器版本号
    Set-Cookie:JSESSIONID=ECA8005D1235BBB6B9CFCC338A8206FD; Path=/03test; HttpOnly
    Content-Type: text/html;charset=utf-8响应字符集,告诉浏览器以什么样的字符集解码;
    Content-Length: 265 响应体长度
    Date: Fri, 23 Jun 2017 13:45:01 GMT 发送日期 少8个小时;
    Expires: -1、Cache-control:no-cache、Pragma:no-cache三个响应头一起使用, 表示禁止浏览器缓存当前页面. 每个浏览器厂商对认识的禁止头不同因此三个一起使用。

    (3)响应正文
    <html>
    <head>
    <title>HTTP响应示例<title>
    </head>
    <body>
    Hello HTTP!
    </body>
    </html>
    响应头和正文之间也必须用空行分隔。  

    HTTP应答码

    HTTP应答码也称为状态码,它反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
    1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
    2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
    3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
    4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOTFound,意味着请求中所引用的文档不存在。
    5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500

    HTTP请求方法

    【GET:获取资源】
         GET方法用来请求已被URI识别的资源。指定的资源经服务器端解析后返回响应内容(也就是说,如果请求的资源是文本,那就保持原样返回;如果是CGI[通用网关接口]那样的程序,则返回经过执行后的输出结果)。

    【POST:传输实体文本】
        POST方法用来传输实体的主体。
        虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法;虽然GET方法和POST方法很相似,但是POST的主要目的并不是获取响应的主体内容。

    【HEAD:获得报文首部】
        HEAD方法和GET方法一样,知识不返回豹纹的主体部分,用于确认URI的有效性及资源更新的日期时间等。
        具体来说:1、判断类型; 2、查看响应中的状态码,看对象是否存在(响应:请求执行成功了,但无数据返回); 3、测试资源是否被修改过
        HEAD方法和GET方法的区别: GET方法有实体,HEAD方法无实体。
    【PUT:传输文件】
        PUT方法用来传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存在请求URI指定的位置。但是HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全问题,故一般不用。
    【DELETE:删除文件】
        指明客户端想让服务器删除某个资源,与PUT方法相反,按URI删除指定资源
    【OPTIONS:询问支持的方法】
        OPTIONS方法用来查询针对请求URI指定资源支持的方法(客户端询问服务器可以提交哪些请求方法)
    【TRACE:追踪路径】
        客户端可以对请求消息的传输路径进行追踪,TRACE方法是让Web服务器端将之前的请求通信还给客户端的方法
    【CONNECT:要求用隧道协议连接代理】
        CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

  • 相关阅读:
    幂不等式
    一个对数级数的求和
    数列极限
    求幂级数的和函数
    证明整数为平方数
    java获取当前时间戳的方法
    《编程小白的第一本python入门书》笔记 二
    《编程小白的第一本python入门书》笔记 一
    python班级群中的问题记录-2016.12.30
    python班级群中的问题记录-2016.12.22
  • 原文地址:https://www.cnblogs.com/-wenli/p/12386438.html
Copyright © 2011-2022 走看看