跳到主要内容

1. 引言 (Introduction)

超文本传输协议 (HTTP) 客户端经常由于请求被取消或连接中断而遇到数据传输中断的情况. 当客户端已经存储了某个表示 (representation) 的部分内容时, 理想的做法是在后续请求中只请求该表示的剩余部分, 而不是传输整个表示. 同样, 本地存储有限的设备如果能只请求较大表示的一个子集, 例如超大文档的单独一页, 或者嵌入图像的尺寸, 也会从中受益.

本文档定义 HTTP/1.1 的范围请求 (Range Requests), 部分响应 (partial responses) 以及 multipart/byteranges 媒体类型. 范围请求是 HTTP 的一项可选 (OPTIONAL) 特性, 其设计使得未实现该特性 (或对目标资源不支持该特性) 的接收方可以像处理普通 GET 请求那样作出响应, 而不影响互操作性. 部分响应通过一个独立的状态码来标识, 以免被可能未实现该特性的缓存误当作完整响应.

尽管范围请求机制在设计上允许范围类型可扩展, 本规范只定义了针对字节范围 (byte ranges) 的请求.

1.1 一致性与错误处理 (Conformance and Error Handling)​

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 和 "OPTIONAL" 应按照 [RFC2119] 中的描述进行解释.

一致性准则以及关于错误处理的考虑在 [RFC7230] 的第 2.5 节中定义.

1.2 语法记法 (Syntax Notation)​

本规范使用 [RFC5234] 定义的扩充巴科斯-瑙尔范式 (Augmented Backus-Naur Form, ABNF) 记法, 以及 [RFC7230] 第 7 节定义的列表扩展, 该扩展允许使用 '#' 运算符紧凑地定义逗号分隔的列表 (类似于 '*' 运算符表示重复的方式). 附录 C 描述了从其他文档导入的规则. 附录 D 展示了将所有列表运算符展开为标准 ABNF 记法之后的汇总语法.