範圍

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 的瀏覽器中載入。

另請參閱