Skip to main content

14. Header Field Definitions (头字段定义)

本章定义了 HTTP/1.1 标准中所有标准 HTTP 头字段的语法和语义。发送者不应该 (SHOULD NOT) 生成本章或第 7.1 节(实体头字段)中未定义的头字段,除非接收者将其视为实体主体的一部分。

头字段分类

HTTP 头字段可以按功能分为以下几类:

通用头字段 (General Header Fields)

适用于请求和响应消息,但不适用于传输的实体。

请求头字段 (Request Header Fields)

允许客户端向服务器传递关于请求和客户端本身的附加信息。

响应头字段 (Response Header Fields)

允许服务器传递关于响应的附加信息,这些信息无法放在状态行中。

实体头字段 (Entity Header Fields)

定义关于实体主体或请求标识的资源的元信息。


HTTP/1.1 头字段完整列表

内容协商头字段

头字段用途示例
14.1 Accept指定客户端可接受的媒体类型Accept: text/html, application/json
14.2 Accept-Charset指定客户端可接受的字符集Accept-Charset: utf-8, iso-8859-1
14.3 Accept-Encoding指定客户端可接受的内容编码Accept-Encoding: gzip, deflate
14.4 Accept-Language指定客户端首选的语言Accept-Language: zh-CN, en
14.5 Accept-Ranges指示服务器是否接受范围请求Accept-Ranges: bytes

身份验证头字段

头字段用途类型
14.8 Authorization包含用户代理的认证凭据请求头
14.33 Proxy-Authenticate代理服务器的认证质询响应头
14.34 Proxy-Authorization客户端向代理提供的认证凭据请求头
14.47 WWW-Authenticate服务器的认证质询响应头

缓存控制头字段

头字段用途说明
14.6 Age响应在代理缓存中停留的时间响应头
14.9 Cache-Control指定缓存指令通用头
14.21 Expires指定响应过期的日期/时间实体头
14.32 Pragma实现特定的指令(向后兼容)通用头
14.44 Vary指示哪些请求头影响缓存选择响应头

条件请求头字段

头字段用途验证方式
14.24 If-Match仅当ETag匹配时执行强验证
14.25 If-Modified-Since仅当资源被修改后执行时间验证
14.26 If-None-Match仅当ETag不匹配时执行强/弱验证
14.27 If-Range条件范围请求组合验证
14.28 If-Unmodified-Since仅当资源未被修改时执行时间验证

内容描述头字段

头字段用途说明
14.11 Content-Encoding应用于实体主体的编码gzip, compress, deflate
14.12 Content-Language实体主体的自然语言zh-CN, en-US
14.13 Content-Length实体主体的字节长度数字
14.14 Content-Location实体的替代位置URI
14.15 Content-MD5实体主体的MD5摘要Base64编码
14.16 Content-Range部分实体主体的位置bytes 200-1000/1234
14.17 Content-Type实体主体的媒体类型text/html; charset=utf-8

连接管理头字段

头字段用途说明
14.10 Connection控制当前连接的选项keep-alive, close
14.23 Host请求的主机和端口号必需的请求头
14.39 TE客户端可接受的传输编码trailers, deflate
14.40 Trailer指示消息尾部存在的头字段分块编码
14.41 Transfer-Encoding应用于消息主体的传输编码chunked
14.42 Upgrade请求切换到其他协议HTTP/2.0, WebSocket
14.45 Via记录中间代理和网关追踪路径

实体验证头字段

头字段用途类型
14.19 ETag实体标签(唯一标识符)强/弱验证器
14.29 Last-Modified资源最后修改时间时间戳

请求控制头字段

头字段用途说明
14.7 Allow资源支持的HTTP方法GET, POST, PUT
14.20 Expect客户端期望的特定服务器行为100-continue
14.22 From请求用户的电子邮件地址信息性
14.31 Max-ForwardsTRACE/OPTIONS请求的最大转发次数数字
14.35 Range请求实体的部分内容bytes=0-499
14.36 Referer请求URI的来源地址URI

响应控制头字段

头字段用途说明
14.18 Date消息的创建日期和时间HTTP日期格式
14.30 Location重定向或新创建资源的URI绝对/相对URI
14.37 Retry-After建议客户端何时重试日期或秒数
14.38 Server源服务器的软件信息软件名称和版本
14.46 Warning附加的警告信息三位数警告码

用户代理信息

头字段用途说明
14.43 User-Agent发起请求的用户代理信息浏览器标识

头字段语法规则

所有 HTTP/1.1 头字段值的语法规则在第 2.2 节(基本规则)和本节中描述。

通用语法规则

message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )

多值头字段

某些头字段可以包含多个值,可以通过以下两种方式表示:

  1. 单个头字段,值用逗号分隔:

    Accept: text/html, application/json, */*
  2. 多个同名头字段:

    Accept: text/html
    Accept: application/json
    Accept: */*

日期/时间格式

HTTP 应用程序必须接受以下三种日期/时间格式:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C asctime() format

重要注意事项

头字段扩展性

HTTP/1.1 允许扩展头字段,但接收者应该能够处理未知的头字段:

  • 代理 - 必须转发无法识别的头字段
  • 用户代理 - 应该忽略无法识别的头字段

头字段顺序

除非头字段定义另有说明,否则头字段的顺序不重要。但是,建议先发送通用头字段,然后是请求头或响应头字段,最后是实体头字段。

头字段大小限制

虽然 HTTP 不对头字段的长度设置预定义的限制,但实现应该准备接受任何合理长度的头字段。


相关参考

注意:本章提供了所有标准 HTTP/1.1 头字段的概览。每个头字段都有详细的语法规则、使用场景和示例。在实际应用中,理解这些头字段的正确用法对于构建符合标准的 HTTP 应用程序至关重要。