1.5.5 请求首部
HTTP请求方法定义了发送请求的客户端想要执行的动作,而HTTP请求的首部则记录了与请求本身以及客户端有关的信息。请求的首部由任意多个用冒号分隔的纯文本键值对组成,最后以回车(CR)和换行(LF)结尾。
作为HTTP 1.1 RFC的一部分,RFC 7231对主要的一些HTTP请求字段(request field)进行了标准化。过去,非标准的HTTP请求通常以 X-
作为前缀,但标准并没有沿用这一惯例。
大多数HTTP请求首部都是可选的,宿主(Host)首部字段是HTTP 1.1唯一强制要求的首部。根据请求使用的方法不同,如果请求的报文中包含有可选的主体,那么请求的首部还需要带有内容长度(Content-Length)字段或者传输编码(Transfer-Encoding)字段。表1-1展示了一些常见的请求首部。
首部字段 | 作用描述 |
---|---|
Accept | 客户端在HTTP响应中能够接收的内容类型。比如说,客户端可以通过 Accept: text/html 这个首部,告知服务器自己希望在响应的主体中收到HTML类型的内容 |
Accept-Charset | 客户端要求服务器使用的字符集编码。比如说,客户端可以通过 Accept-Charset: utf-8 这个首部,告知服务器自己希望响应的主体使用UTF-8字符集 |
Authorization | 这个首部用于向服务器发送基本的身份验证证书 |
Cookie | 客户端应该在这个首部中把服务器之前设置的所有cookie回传给服务器。比如说,如果服务器之前在浏览器上设置了3个cookie,那么Cookie首部字段将在一个字符串里面包含这3个cookie,并使用分号对这些cookie进行分隔。以下是一个Cookie首部示例: Cookie: my_first_cookie=hello; my_second_cookie=world |
Content-Length | 请求主体的字节长度 |
Content-Type | 当请求包含主体的时候,这个首部用于记录主体内容的类型。在发送 POST 或 PUT 请求时,内容的类型默认为 x-www-form-urlencoded ,但是在上传文件时,内容的类型应该设置为 multipart/form-data (上传文件这一操作可以通过将 input 标签的类型设置为 file 来实现) |
Host | 服务器的名字以及端口号。如果这个首部没有记录服务器的端口号,就表示服务器使用的是80端口 |
Referrer | 发起请求的页面所在的地址 |
User-Agent | 对发起请求的客户端进行描述 |