范围

Range HTTP 请求头指示服务器应返回资源的哪些部分。可以在一个 Range 头中同时请求多个部分,服务器可能会在一个多部分文档中返回这些范围。如果服务器返回范围,它将使用 206 Partial Content 状态代码作为响应。如果范围无效,服务器将返回 416 Range Not Satisfiable 错误。

不支持范围请求的服务器可能会忽略 Range 头,并使用 200 状态代码返回整个资源。忽略 Range 头等效于 Accept-Ranges: none,因此 Accept-Ranges 响应头很少用于此目的。

目前,只有 bytes 单位已注册,它们是偏移量(从零开始并包含)。如果请求的数据应用了 内容编码,则每个字节范围表示编码的字节序列,而不是解码后获得的字节。

当指令指定单个字节范围时,该头是 CORS 安全列表请求头

头类型 请求头
禁止的头名称

语法

http
Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>, <range-start>-<range-end>
Range: <unit>=-<suffix-length>

指令

<unit>

指定范围的单位。

<range-start>

以给定单位表示的整数,指示请求范围的起始位置。

<range-end>

以给定单位表示的整数,指示请求范围的结束位置。此值是可选的,如果省略,则使用资源的末尾作为范围的结束位置。

<suffix-length>

指示要返回的资源末尾的单位数的整数。

示例

以下示例展示了如何使用 Range 头进行 CORS 安全列表请求以及请求多个范围。其他示例可以在 HTTP 范围请求 指南中找到。

单个字节范围和 CORS 安全列表请求

当值为单个字节范围时,Range 头是 CORS 安全列表请求头。这意味着它可以在跨源请求中使用,而不会触发 预检 请求,这对于请求媒体和恢复下载非常有用。

以下示例请求资源的前 500 个字节

http
Range: bytes=0-499

要请求第二个 500 个字节

http
Range: bytes=500-999

省略结束位置将请求资源的所有剩余单位,因此可以使用以下方法请求长度为 1000 字节的资源的最后 100 个字节

http
Range: bytes=900-

或者,如果不知道资源的大小,可以使用后缀范围 -n 请求最后 n 个字节

http
Range: bytes=-100

请求多个范围

对于长度为 10000 字节的资源,以下示例请求三个单独的范围;200-999(800 字节)、2000-2499(500 字节),最后是 9500-。范围说明符值 9500- 省略了结束位置,这表明从 9500 开始的所有字节都是第三个范围的一部分(500 字节)。

http
Range: bytes=200-999, 2000-2499, 9500-

此示例请求文件的开头 500 字节和结尾 500 字节。如果这些范围重叠(例如,如果请求的资源长度小于 1000 字节),服务器可能会拒绝该请求。

http
Range: bytes=0-499, -499

规范

规范
HTTP 语义
# field.range

浏览器兼容性

BCD 表格只在启用了 JavaScript 的浏览器中加载。

另请参阅