HTTP 消息结构学习笔记

消息结构

HTTP 消息结构由两部分组成:消息头和消息体。消息头包含一个或多个解释报文的键值对,而消息体则包含实际需要传输的数据。

消息头

消息头包含以下几个部分:

  1. 请求行(Request Line):用来说明请求类型、要访问的资源以及所使用的HTTP版本;
  2. 请求头部(Request Headers):包含请求的一些附加信息,如Accept-Language字段、User-Agent字段等;
  3. 状态行(Status Line):用来说明响应的HTTP状态码,以及原因短语;
  4. 响应头部(Response Headers):包含响应的一些附加信息,如Content-Type字段、Content-Length字段等。

消息体

消息体是可选的,如果存在,则包含我们需要传输的实际数据。例如,当我们上传文件时,就需要将文件内容放在消息体里传输。

实例

下面是一个使用HTTP请求来获取 https://www.example.com/ 上的网页内容的示例:

Copy Code
GET / HTTP/1.1 Host: www.example.com Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8

上面的请求报文包含了以下几个部分:

  • GET / HTTP/1.1 表示使用GET方法获取网页内容,访问的资源路径为根路径,使用HTTP版本为1.1;
  • Host: www.example.com 表示访问的主机名为www.example.com
  • AcceptUser-AgentAccept-EncodingAccept-Language 是该请求的一些附加信息。