HTTP 首部用于给服务器和客户端提供报文主体大小、使用的语言及认证消息等内容。首部字段由字段名和字段值构成,中间用冒号「:」隔开。有些首部是某些报文专用的,如请求首部只适用于请求报文中,有些通用些。按类型用途不同可以分为 5 类。
- 通用首部
- 请求首部
- 响应首部
- 实体首部
- 常见非标准字段(自定义)
通用首部
服务器和客户端都可以使用的首部。
首部字段 | 说明 | 例子 |
---|---|---|
Cache-Control | 控制缓存的行为 | Cache-Control: no-cache |
Connection | 浏览器优先使用的连接类型 | Connection: keep-alive Connection: Uprade |
Date | 报文创建日期时间 | Date: Sat, 19 Sep 2020 06:13:42 GMT |
Pragma | 另一种报文指令,但不专用于缓存 | Pragme: no-cache |
Trailer | 报文采用了分块传输编码(chunked transfer encoding)方式 | Trailer: Max-Forwards |
Transfer-Encoding | 报文的传输编码方式:chunked、compress、deflate、gzip 和 identity | Transfer-Encoding: chunked |
Upgrade | 要求升级为另一个协议 | Upgrade: HTTP/2.0, STTP/1.3, IRC/6.9, RTA/x11 |
Via | 代理服务器相关信息,告知请求代理是哪个 | Via: 1.0 fred, 1.1 (Apace/1.1) |
Warning | 一般性错误警告,告知内容中哪里可能存在错误 | Warning: 199 Miscellaneous warning |
- chunked:数据分块形式发送。
- compress:采用 LZW (Lempel-Ziv-Welch)压缩算法。
- deflate:采用 zlib 结构和 deflate 压缩算法。
- gzip:采用 LZ77(Lempel-Ziv coding)压缩算法和 32 位 CRC 检验的编码方式。
- identity:不压缩处理或修改
请求首部
客户端想服务端发送请求报文,补充请求的附加内容、客户端信息、响应内容相关优先级等信息。
首部字段名 | 说明 | 例子 |
---|---|---|
Accept | 告知服务器能发送哪些媒体类型 | Accept: application/json, text/javascript, /; q=0.01 |
Accept-Charset | 告知服务器能发送哪些字符集 | Accept-Charset: utf-8 |
Accept-Encoding | 告知服务器能发送哪些编码方式 | Accept-Encoding: gzip, deflate |
Accept-Language | 告知服务器能发送哪些语言 | Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,zh;q=0.6 |
Authorization | 提供信息给服务器对其身份认证 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Expect | 要求服务器对某请求需要做出的行为 | Expect: 100-continue |
From | 提供客户端 E-mail 地址 | From: test@ |
Host | 提供接受请求的服务器主机号和端口号(如果是标准端口即可忽略) | Host: Host: :1111 |
If-Match | 字段值与服务器特定资源标记值(ETag)匹配才处理请求 | If-Match: “123456” |
If-Modified-Since | 确认本地资源是否有效,如果有更新就处理请求,否则响应返回 304 Not Modified | If-Modified-Since: Sat, 19 Sep 2020 06:13:28 GMT |
If-None-Match | 与 If-Match 相反,不匹配才处理请求 | If-None-Match: “123” |
If-Range | 对资源的某个范围请求 | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 与 If-Modified-Since 相反,未发生更新才处理请求。如果有更新,则响应返回状态码 412 Precondition Failed | If-Unmodified-Since: Sat, 19 Sep 2020 06:13:28 GMT |
Max-Forwards | 限制代理或网关转发次数 | Max-Forwards: 5 |
Proxy-Authorization | 提供信息给服务器对代理进行身份认证 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 获取部分资源 | Range: bytes=500-999 |
Referer | 当前文档的 URL | Referer: / |
TE | 告知服务器可以使用哪些扩展传输编码 | TE: trailers, deflate |
User-Agent | 发出请求的应用程序名称 | User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36… |
响应首部
服务端向客户端返回响应报文中所使用的字段。补充响应的附加内容,也要求客户端提供额外的内容信息。
首部字段名 | 说明 | 例子 |
---|---|---|
Accept-Ranges | 服务器可接受的资源请求范围类型 | Accept-Ranges: bytes |
Age | 资源在代理缓存中存在的时间,单位为秒 | Age: 20 |
ETag | 将资源以字符串形式作唯一性标识 | ETag: “test” |
Location | 引导客户端访问另一个 URL,通常配合 3xx 响应,提供重定向 URL | Location: / |
Proxy-Authenticate | 把代理服务器所要求的认证消息发给客户端 | Proxy-Authenticate: Basic realm=“Auth” |
Retry-After | 告知客户端多久(具体日期或秒数)后再发送请求,主要配合状态码 503 Service Unavailable 或 3xx Redirect 响应 | Retry-After: 120 Retry-After: Sat, 19 Sep 2020 06:13:28 GMT |
Server | 告知客户端当前服务器安装的应用程序信息 | Server: Apache/2.4.38 (Uos) |
Vary | 列出所有客户端请求首部,服务器根据这些首部选择文档或产生定制内容。如所提供的文档取决于 User-Agent,那么 Vary 首部必须含有 User-Agent | Vary: User-Agent |
WWW-Authenticate | 告知客户端请求是使用的认证模式(Basic 或 Digest) | WWW-Authenticate: Basic |
实体首部
补充实体主体的更多信息,如主体长度或 MIME 类型。
首部字段名 | 说明 | 例子 |
---|---|---|
Allow | 告知客户端对特定资源能使用的 HTTP 方法。但服务器收到不支持的方法请求时,会返回状态码 405 Method Not Allow. | Allow: GET, HEAD |
Content-Encoding | 用于对特定媒体类型的数据进行压缩。告知客户端要用的解压方式:gzip, compress, deflate, identity, br | Content-Encoding: gzip |
Content-Language | 内容所使用的语言 | Content-Language: zh-CN |
Content-Length | 响应消息体长度,单位为字节(8 位/字节) | Content-Length: 15000 |
Content-Location | 报文主体返回资源所对应的 URL(相对/绝对地址). Location 是返回重定义 URL | Content-Location: / |
Content-Range | 数据片段在整个文件中的位置 | Content-Range: bytes 200-1000/67589 |
Content-Type | 资源的 MIME 类型 | Content-Type: text/html; charset=utf-8 |
Expires | 指定日期/时间,超过即表示已过期。如果 Cache-Control 设置了 max-age 和 s-max-age,那么 Expires 会被忽略 | Expires: Mon, 21 Sep 2020 02:16:21 GMT |
Last-Modified | 该实体最后修改时间 | Last-Modified: Mon, 21 Sep 2020 02:16:21 GMT |
常见非标注字段(自定义)
HTTP 首部字段可以自定义。
首部字段名 | 说明 | 例子 | 类别 |
---|---|---|---|
X-Frame-Options | 为了防止点击劫持攻击(clckjacking)。用于控制网站 Frame 标签内容显示问题:deny, sameorigin, allow-from uri | X-Frame-Options: deny | 响应首部 |
X-XSS-Protection | 控制浏览器 XXS 防护机制开关:0(关闭 XSS 过滤)或(开启 XSS 过滤) | X-XSS-Protection: 1 | 响应首部 |
DNT | 拒绝被精准广告跟踪:0 (同意被跟踪) 或 1 (不同意被跟踪) | DNT: 1 | 请求首部 |
- deny: 表示该页面不允许在 frame 中展示,即使是在同域名中。
- sameorigin: 表示该页面可以在同域名 frame 中展示。X-Frame-Options: sameorigin
- allow-from uri: 表示该页面可以在指定 uri 中展示。X-Frame-Options: allow-from /
参考
-
HTTP Headers
-
HTTP头字段
-
《图解HTTP》
-
《HTTP权威指南》