1. Introduction (简介)
超文本传输协议 (Hypertext Transfer Protocol, HTTP) 是一种无状态的应用层请求/响应协议,它使用可扩展的语义和自描述消息来实现与基于网络的超文本信息系统的灵活交互。HTTP/1.1 由以下文档定义:
-
本文档
-
"HTTP Semantics" [HTTP]
-
"HTTP Caching" [CACHING]
本文档规定了如何使用 HTTP/1.1 消息语法 (message syntax)、帧 (framing) 和连接管理机制来传达 HTTP 语义。其目标是为 HTTP/1.1 消息解析器和消息转发中介定义完整的需求集。
本文档废弃了 RFC 7230 中与 HTTP/1.1 消息传递和连接管理相关的部分,变更内容在附录 C.3 中总结。RFC 7230 的其他部分被 "HTTP Semantics" [HTTP] 废弃。
1.1. Requirements Notation (需求表示法)
本文档中的关键词 "MUST" (必须)、"MUST NOT" (禁止)、"REQUIRED" (必需)、"SHALL" (应)、"SHALL NOT" (不应)、"SHOULD" (应该)、"SHOULD NOT" (不应该)、"RECOMMENDED" (推荐)、"NOT RECOMMENDED" (不推荐)、"MAY" (可以) 和 "OPTIONAL" (可选) 应按照 BCP 14 [RFC2119] [RFC8174] 中描述的方式进行解释,当且仅当它们以全部大写形式出现时,如此处所示。
关于一致性标准和错误处理考虑事项的定义见 [HTTP] 的第 2 节。
1.2. Syntax Notation (语法表示法)
本规范使用 [RFC5234] 的增强巴科斯-瑙尔范式 (Augmented Backus-Naur Form, ABNF) 表示法,并扩展了 [RFC7405] 中定义的字符串大小写敏感性表示法。
本规范还使用了 [HTTP] 第 5.6.1 节中定义的列表扩展,允许使用 "#" 操作符紧凑地定义逗号分隔的列表 (类似于 "*" 操作符表示重复)。附录 A 显示了收集的语法,其中所有列表操作符都扩展为标准 ABNF 表示法。
按照惯例,以 "obs-" 为前缀的 ABNF 规则名称表示因历史原因出现的过时语法规则。
以下核心规则通过引用包含,如 [RFC5234] 附录 B.1 中定义的: ALPHA (字母)、CR (回车)、CRLF (CR LF)、CTL (控制字符)、DIGIT (十进制 0-9)、DQUOTE (双引号)、HEXDIG (十六进制 0-9/A-F/a-f)、HTAB (水平制表符)、LF (换行)、OCTET (任何 8 位数据序列)、SP (空格) 和 VCHAR (任何可见 [USASCII] 字符)。
以下规则在 [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>