跳到主要内容

1. 引言

超文本传输协议 (HTTP) 是一种无状态的应用层请求/响应协议, 它使用可扩展语义和自描述消息, 以便与基于网络的超文本信息系统进行灵活交互. HTTP/1.1 由以下文档定义:

  • 本文档
  • "HTTP Semantics" [HTTP]
  • "HTTP Caching" [CACHING]

本文档规定了如何使用 HTTP/1.1 的消息语法, 成帧和连接管理机制来传达 HTTP 语义. 其目标是定义 HTTP/1.1 消息解析器和消息转发中间件的完整需求集合.

本文档废止 RFC 7230 中与 HTTP/1.1 消息和连接管理相关的部分, 相关变更汇总于 Appendix C.3. RFC 7230 的其他部分由 "HTTP Semantics" [HTTP] 废止.

1.1. 需求表示法

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 仅当以这里所示的全大写形式出现时, 才应按 BCP 14 [RFC2119] [RFC8174] 中的说明解释.

一致性准则以及与错误处理相关的考虑事项在 [HTTP] 的 Section 2 中定义.

1.2. 语法表示法

本规范使用 [RFC5234] 的扩展巴科斯-诺尔范式 (Augmented Backus-Naur Form, ABNF) 表示法, 并通过 [RFC7405] 中定义的字符串大小写敏感表示法进行扩展.

本规范还使用 [HTTP] Section 5.6.1 中定义的列表扩展, 它允许使用 "#" 运算符紧凑地定义逗号分隔列表 (类似于 "*" 运算符表示重复). Appendix A 给出了汇总语法, 其中所有列表运算符都已展开为标准 ABNF 表示法.

作为约定, 以 "obs-" 为前缀的 ABNF 规则名称表示因历史原因而出现的废弃语法规则.

以下核心规则按 [RFC5234] Appendix B.1 中的定义通过引用纳入: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG (hexadecimal 0-9/A-F/a-f), HTAB (horizontal tab), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), 和 VCHAR (any visible [USASCII] character).

以下规则在 [HTTP] 中定义:

BWS           = `<BWS, see [HTTP], Section 5.6.3>`
OWS = `<OWS, see [HTTP], Section 5.6.3>`
RWS = `<RWS, see [HTTP], Section 5.6.3>`
absolute-path = `<absolute-path, see [HTTP], Section 4.1>`
field-name = `<field-name, see [HTTP], Section 5.1>`
field-value = `<field-value, see [HTTP], Section 5.5>`
obs-text = `<obs-text, see [HTTP], Section 5.6.4>`
quoted-string = `<quoted-string, see [HTTP], Section 5.6.4>`
token = `<token, see [HTTP], Section 5.6.2>`
transfer-coding =
`<transfer-coding, see [HTTP], Section 10.1.4>`

以下规则在 [URI] 中定义:

absolute-URI  = `<absolute-URI, see [URI], Section 4.3>`
authority = `<authority, see [URI], Section 3.2>`
uri-host = `<host, see [URI], Section 3.2.2>`
port = `<port, see [URI], Section 3.2.3>`
query = `<query, see [URI], Section 3.4>`