HTTP 消息结构学习笔记
消息结构
HTTP 消息结构由两部分组成:消息头和消息体。消息头包含一个或多个解释报文的键值对,而消息体则包含实际需要传输的数据。
消息头
消息头包含以下几个部分:
- 请求行(Request Line):用来说明请求类型、要访问的资源以及所使用的HTTP版本;
- 请求头部(Request Headers):包含请求的一些附加信息,如Accept-Language字段、User-Agent字段等;
- 状态行(Status Line):用来说明响应的HTTP状态码,以及原因短语;
- 响应头部(Response Headers):包含响应的一些附加信息,如Content-Type字段、Content-Length字段等。
消息体
消息体是可选的,如果存在,则包含我们需要传输的实际数据。例如,当我们上传文件时,就需要将文件内容放在消息体里传输。
实例
下面是一个使用HTTP请求来获取 https://www.example.com/ 上的网页内容的示例:
Copy CodeGET / 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;Accept
、User-Agent
、Accept-Encoding
和Accept-Language
是该请求的一些附加信息。