http协议(二、报文格式)

一、请求报文

        一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

请求报文请求报文
请求报文请求报文实例

 

1. 请求行

        请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 HEAD、GET、POST、PUT、PATCH、DELETE、OPTIONS、TRACE、CONNECT等。最常用的是GET、POST。

1)HTTP/1.0

       HTTP/1.0支持:GET、POST、HEAD三种HTTP请求方法。

2)HTTP/1.1

       HTTP/1.1是当前正在使用的版本。该版本默认采用持久连接,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

       HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法。

       另外用于特定请求的URL方法还有:

       PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别(对put方法的补充, 局部更新)。
       MOVE: 请求服务器将指定的页面移至另一个网络地址。
       COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
       LINK: 请求服务器建立链接关系。
       UNLINK: 断开链接关系。
       WRAPPED:允许客户端发送经过封装的请求。
       Extension-mothed:在不改动协议的前提下,可增加另外的方法。

2. 请求头(查看详情

        请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,常见的请求头有:

  • User-Agent : 产生请求的浏览器类型
  • Accept : 客户端希望接受的数据类型
  • Content-Type:发送端发送的实体数据的数据类型
  • Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
  • 等等

3. 空行

        最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

4. 请求体(请求正文)

        请求体不在 GET 方法中使用,而是在POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求体相关的最常使用的是请求体类型 Content-Type 和请求体长度 Content-Length;

 

一、请求报文

        HTTP响应也由四个部分组成,分别是:状态行、消息报头(响应头)、空行和响应正文。如下图:

请求报文响应报文

 

响应报文实例响应报文实例

 

1. 状态行

        状态行格式:HTTP-Version Status-Code Reason-Phrase CRLF

        其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  • 1xx:指示信息--表示请求已接收,继续处理。
  • 2xx:成功--表示请求已被成功接收、理解、接受。
  • 3xx:重定向--要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误--请求有语法错误或请求无法实现。
  • 5xx:服务器端错误--服务器未能实现合法的请求。

        常见状态代码、状态描述的说明如下。

  • 200 OK:客户端请求成功。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized:请求未经授权。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
  • 500 Internal Server Error:服务器发生不可预期的错误。
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

2. 响应头(查看详情

        响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。常见的响应头字段及其含义:

        Allow:服务器支持哪些请求方法(如GET、POST等)。

        Content-Encoding:文档的编码(Encode)方法。

        Content-Length:表示内容长度。

        Content- Type:表示后面的文档属于什么MIME类型。

        Date:当前的GMT时间

        等等...

3. 空行

        同请求报文中的空行

4. 响应体

        1). 前后端分离: 响应正文是一个json

        2). 后端渲染: 响应正文是一个html文档

posted on 2020-07-31 17:36  漫思  阅读(668)  评论(0编辑  收藏  举报

导航