HTTP 首部:通用首部、请求首部、响应首部和实体首部

时间:2025-01-07 06:58:41

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权威指南》