Range
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der HTTP Range
Anforderungsheader gibt den Teil einer Ressource an, den der Server zurückgeben soll. Mehrere Teile können gleichzeitig in einem Range
-Header angefordert werden, und der Server kann diese Bereiche in einem mehrteiligen Dokument zurücksenden. Wenn der Server Bereiche zurücksendet, verwendet er den 206 Partial Content
Statuscode für die Antwort. Wenn die Bereiche ungültig sind, gibt der Server den Fehler 416 Range Not Satisfiable
zurück.
Ein Server, der Bereichsanfragen nicht unterstützt, kann den Range
-Header ignorieren und die gesamte Ressource mit einem 200
Statuscode zurückgeben. Ältere Browser verwendeten einen Antwort-Header von Accept-Ranges: none
, um Funktionen wie 'Pause' oder 'Fortsetzen' in Download-Managern zu deaktivieren, aber da ein Server, der den Range
-Header ignoriert, die gleiche Bedeutung hat wie die Antwort Accept-Ranges: none
, wird dieser Header selten auf diese Weise verwendet.
Derzeit sind nur bytes
Einheiten registriert, die Offsets sind (nullbasiert & inklusiv). Wenn die angeforderten Daten eine Inhaltscodierung haben, repräsentiert jeder Bytebereich die kodierte Bytefolge, nicht die Bytes, die nach dem Dekodieren erhalten würden.
Der Header ist ein CORS-sicherer Anforderungsheader, wenn die Direktive einen einzigen Bytebereich angibt.
Header-Typ | Anforderungsheader |
---|---|
Verbotener Header-Name | Nein |
Syntax
Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, …, <range-startN>-<range-endN>
Range: <unit>=-<suffix-length>
Direktiven
<unit>
-
Die Einheit, in der Bereiche definiert sind. Derzeit sind nur
bytes
eine registrierte Einheit. <range-start>
-
Ein ganzzahliger Wert in der angegebenen Einheit, der die Startposition des Anforderungsbereichs angibt.
<range-end>
-
Ein ganzzahliger Wert in der angegebenen Einheit, der die Endposition des angeforderten Bereichs angibt. Dieser Wert ist optional und, wenn weggelassen, wird das Ende der Ressource als Ende des Bereichs verwendet.
<suffix-length>
-
Ein ganzzahliger Wert, der die Anzahl der Einheiten am Ende der Ressource angibt, die zurückgegeben werden sollen.
Beispiele
Die folgenden Beispiele zeigen, wie Anfragen mit dem Range
-Header für CORS-sichere Anforderungen und für die Anforderung mehrerer Bereiche gemacht werden. Weitere Beispiele finden Sie im HTTP Bereichsanfragen Leitfaden.
Einzelne Bytebereiche und CORS-sichere Anforderungen
Der Range
-Header ist ein CORS-sicherer Anforderungsheader, wenn der Wert ein einzelner Bytebereich ist. Das bedeutet, dass er in Anfragen über Ursprungsgrenzen hinweg verwendet werden kann, ohne eine Vorabinspektion auszulösen, was nützlich ist, um Medien anzufordern und Downloads fortzusetzen.
Das folgende Beispiel fordert die ersten 500 Bytes einer Ressource an:
Range: bytes=0-499
Um die zweiten 500 Bytes anzufordern:
Range: bytes=500-999
Wenn die Endposition weggelassen wird, werden alle verbleibenden Einheiten der Ressource angefordert, sodass die letzten 100 Bytes einer Ressource mit einer Länge von 1000 Bytes angefordert werden können mit:
Range: bytes=900-
Alternativ kann, wenn nicht bekannt ist, wie groß eine Ressource ist, das letzte n
-Bytes unter Verwendung eines Suffixbereichs von -n
angefordert werden:
Range: bytes=-100
Anforderung von mehreren Bereichen
Angesichts einer Ressource mit einer Länge von 10000 Bytes fordert das folgende Beispiel drei separate Bereiche an: 200
-999
(800 Bytes), 2000
-2499
(500 Bytes) und schließlich 9500-
. Der Bereichsspezifizierwert 9500-
lässt eine Endposition aus, was anzeigt, dass alle Bytes ab 9500 Teil des dritten Bereichs (500 Bytes) sind.
Range: bytes=200-999, 2000-2499, 9500-
Dieses Beispiel fordert die ersten 500 und letzten 500 Bytes der Datei an. Die Anfrage kann vom Server abgelehnt werden, wenn sich diese Bereiche überschneiden (wenn die angeforderte Ressource beispielsweise weniger als 1000 Bytes lang war).
Range: bytes=0-499, -499
Prüfen, ob ein Server Bereichsanfragen unterstützt
Der folgende Curl-Befehl macht eine HEAD
Anfrage für ein Bild:
curl -v --http1.1 -I https://i.imgur.com/z4d4kWk.jpg
# or using the OPTIONS method:
# curl -v --http1.1 -X OPTIONS https://i.imgur.com/z4d4kWk.jpg
Dies führt zur folgenden HTTP-Anfrage:
HEAD /z4d4kWk.jpg HTTP/1.1
Host: i.imgur.com
User-Agent: curl/8.7.1
Accept: */*
Der Server antwortet mit einer 200
Antwort, und der Accept-Ranges: bytes
Header ist vorhanden (einige Header sind aus Gründen der Kürze weggelassen):
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 146515
Content-Type: image/jpeg
…
Accept-Ranges: bytes
Spezifikationen
Specification |
---|
HTTP Semantics # field.range |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
If-Range
bedingter AnforderungsheaderContent-Range
AntwortheaderContent-Type
Accept-Ranges
206 Partial Content
416 Range Not Satisfiable
- HTTP Bereichsanfragen Leitfaden
- CORS-sicherer Anforderungsheader