HTTP请求与响应格式?

HTTP请求与响应格式是什么?

发送客户端请求的格式

客户端请求由一系列文本指令组成,并使用 CRLF 分隔,它们被划分为三个块:

  1. 第一行包括请求方法及请求参数:

    • 文档路径,不包括协议和域名的绝对路径 URL;

    • 使用的 HTTP 协议版本。

  2. 接下来的行每一行都表示一个 HTTP 首部,为服务器提供关于所需数据的信息(例如语言,或 MIME 类型),或是一些改变请求行为的数据(例如当数据已经被缓存,就不再应答)。这些 HTTP 首部组成以一个空行结束的一个块。

  3. 最后一块是可选数据块,包含更多数据,主要被 POST 方法所使用。

GET请求示例:

GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr

POST请求示例:

POST /contact_form.php HTTP/1.1
Host: developer.mozilla.org
Content-Length: 64
Content-Type: application/x-www-form-urlencoded

name=Joe%20User&request=Send%20me%20one%20of%20your%20catalogue

服务器响应结构

与客户端请求类似,服务器响应由一系列文本指令组成,并使用 CRLF 分隔,划分为三个不同的块:

  1. 第一行是状态行包括使用的 HTTP 协议版本,状态码和一个状态描述(可读描述文本)。

  2. 接下来每一行都表示一个 HTTP 首部,为客户端提供关于所发送数据的一些信息(如类型,数据大小,使用的压缩算法,缓存指示)。与客户端请求的头部块类似,这些 HTTP 首部组成一个块,并以一个空行结束。

  3. 最后一块是数据块,包含了响应的数据 (如果有的话)。

200成功的响应示例:

301资源已被永久移动的响应示例:

404请求资源不存在的网页响应示例:

Reference

Last updated