字段速查表

全部字段按 A–Z 索引——方向、语法要点、是否逐跳,链到详解。

作者 David更新于 第 22 篇(共 22 篇)

方向:Req = 请求,Res = 响应,Rep = 表示字段(两侧皆可)。逐跳字段以 ⚠️ 标注(代理必须剥离)。

A–C

字段方向语法要点详解
AcceptReq#( media-range [ weight ] );特异性优先于 q协商
Accept-CharsetReq已废弃,勿用协商
Accept-EncodingReq空值 = 只接受 identity协商
Accept-LanguageReq语言范围 + q;子标签数不影响排序协商
Accept-PatchRes#media-type上下文
Accept-RangesResbytes / none范围
AgeResdelta-seconds,缓存添加缓存
AllowRes#method;405 中必需方法
Authentication-InfoRes#auth-param认证
AuthorizationReqauth-scheme SP (token68 / #auth-param)认证
Cache-ControlReq/Res#cache-directive;未知指令须忽略缓存
ConnectionReq/Res ⚠️列逐跳字段名 + close连接
Content-DispositionResattachment; filename*=UTF-8''…上下文
Content-EncodingRep端到端;改变 ETag表示
Content-LanguageRep#language-tag,指受众表示
Content-LengthRep十进制;与 TE 冲突时无效成帧
Content-LocationRep本表示的 URI,非重定向表示
Content-RangeResbytes SP 0-499/10000(SP 非 =)范围
Content-TypeReptype/subtype + 参数表示
CookieReq; 分隔;只有名值对Cookie

D–L

字段方向语法要点详解
DateResIMF-fixdate,恒 GMT日期
ETagRes双引号必需;W/ 区分大小写条件
ExpectReq ⚠️仅 100-continue;未知值 → 417连接
ExpiresRes绝对时刻;优先级低于 max-age缓存
ForwardedReqfor=/by=/host=/proto=;IPv6 须 "[…]"代理
FromReq邮箱;无鉴权语义上下文
HostReq必需且唯一;缺失 → 400请求行
If-MatchReq强比较;失败 → 412条件
If-Modified-SinceReq仅 GET/HEAD;被 If-None-Match 压制条件
If-None-MatchReq弱比较;命中 → 304条件
If-RangeReq强验证器;不匹配 → 完整 200范围
If-Unmodified-SinceReq仅在无 If-Match 时求值条件
Keep-AliveReq/Res ⚠️timeout=/max=;仅为提示连接
Last-ModifiedRes弱验证器;不得晚于 Date条件
LinkRes<uri>; rel=…,尖括号必需上下文
LocationRes可为相对引用;201 中语义不同3xx

M–Z

字段方向语法要点详解
Max-ForwardsReq仅 TRACE/OPTIONS;转发前减 1代理
Proxy-AuthenticateRes ⚠️配 407认证
Proxy-AuthorizationReq ⚠️逐跳,不可转发认证
RangeReq闭区间;仅 GET 有定义范围
RefererReq拼写少一个 r;禁含 fragment上下文
Retry-AfterRes秒数或日期;数字开头即秒上下文
ServerRes同 UA 语法;宜精简上下文
Set-CookieRes绝不可合并;每个一行Cookie
TEReq ⚠️须列入 Connection成帧
TrailerReq/Res声明 trailer 区将出现的字段字段语法
Transfer-EncodingReq/Res ⚠️chunked 必须在末位成帧
UpgradeReq/Res ⚠️须配 Connection: Upgrade连接
User-AgentReq可嵌套 comment;不可信上下文
VaryRes缺失 = 缓存投毒;* = 不可复用协商
ViaReq/Res追加到末尾,顺序即路径代理
WWW-AuthenticateRes401 中必需认证

十个最易错的细节

  1. Content-Length 是十进制,chunk-size 是十六进制。
  2. Range: bytes=0-499 是 500 字节(两端闭区间)。
  3. Content-Range 用 SP 分隔单位(bytes 0-499/10000),Range 用 =。
  4. ETag 的双引号是语法的一部分,不能省。
  5. Set-Cookie 不可合并成一行——Expires 里有逗号。
  6. Cookie 的 Domain 不写反而更严格(不含子域)。
  7. Accept 的匹配特异性优先于 q 值。
  8. If-None-Match 存在时,If-Modified-Since 被完全忽略。
  9. no-cache 是「用前先验证」,no-store 才是「不存」。
  10. 漏发 Vary 会导致 CDN 把压缩版发给不支持的客户端。

收尾

全专栏基准为 RFC 9110 / 9111 / 9112(2022-06)。与 HTTP/2、HTTP/3 的分界:

  • 仍然适用:全部字段语义、方法、状态码、条件请求、范围请求、缓存、认证(归 RFC 9110,跨版本通用)。
  • 已被取代:报文成帧、Transfer-Encoding/chunked、Connection 与逐跳字段、Upgrade、Keep-Alive、reason-phrase(归 RFC 9112,HTTP/1.1 专属;HTTP/2+ 由二进制帧层负责)。

换句话说,第 1 部分是 HTTP/1.1 独有的,第 2、3 部分的知识在 HTTP/2 与 HTTP/3 上原样成立。

本页目录