HTTP Range Header

Der HTTP-Header Range ist ein Request-Header, der einen spezifischen Teilbereich einer Ressource anfordert. Server antworten mit 206 Partial Content Status und liefern nur den angeforderten Bereich, was Bandbreite spart und Resume-Funktionalität ermöglicht.

Typ

Request-Header

Syntax

Der Header spezifiziert die Einheit und den angeforderten Bereich.

http
Range: bytes=0-1023
Range: bytes=1024-2047
Range: bytes=-500
Range: bytes=1000-

Direktiven

Die Direktiven definieren Maßeinheit und Bereichsgrenzen für Partial Requests.

bytes=<start>-<end>
Fordert Bytes von Position start bis end (inklusive). Beide Werte sind 0-basiert.
bytes=<start>-
Fordert alle Bytes ab Position start bis zum Ende der Ressource.
bytes=-<suffix>
Fordert die letzten suffix Bytes der Ressource.
bytes=<range1>, <range2>
Multiple Ranges in einem Request (selten unterstützt von APIs).

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Range-Header.

Beispiel 1 Erste 1KB eines großen API-Exports

http
GET /api/exports/report-2024.csv HTTP/1.1
Host: api.example.com
Range: bytes=0-1023

Server sendet ersten Kilobyte mit Partial Content Status.

http
HTTP/1.1 206 Partial Content
Content-Type: text/csv
Content-Range: bytes 0-1023/1048576
Content-Length: 1024

id,name,value
1,Product A,100
2,Product B,250
...

Beispiel 2 Resume Download nach Verbindungsabbruch

http
GET /api/files/document.pdf HTTP/1.1
Host: api.example.com
Range: bytes=524288-
If-Range: "abc123etag"

Client fordert Rest der Datei ab Byte 524288, Server validiert ETag und sendet verbleibende Daten.

http
HTTP/1.1 206 Partial Content
Content-Type: application/pdf
Content-Range: bytes 524288-1048575/1048576
Content-Length: 524288
ETag: "abc123etag"

<binary PDF data>

Beispiel 3 Letzte 500 Bytes für Log-Tail

http
GET /api/logs/application.log HTTP/1.1
Host: api.example.com
Range: bytes=-500

Server sendet nur letzte 500 Bytes der Logdatei.

http
HTTP/1.1 206 Partial Content
Content-Type: text/plain
Content-Range: bytes 99500-99999/100000
Content-Length: 500

[2024-03-15 16:45:23] INFO Request completed
[2024-03-15 16:45:24] INFO New connection from 10.0.0.5

Partial Content Flow

Range Request für Partial Content

Vorteile für die Systemarchitektur

Range-Requests optimieren Bandbreite und ermöglichen robuste Datei-Übertragungen.

  • Bandwidth-Effizienz: Nur benötigte Datenbereiche werden übertragen, spart Kosten bei großen Exporten
  • Resume-Funktionalität: Unterbrochene Downloads können fortgesetzt werden ohne erneute Übertragung
  • Parallele Downloads: Clients können mehrere Ranges gleichzeitig laden für schnellere Übertragung

Spezifikation

RFC 9110, Section 14 – HTTP Semantics (Range Requests) https://www.rfc-editor.org/rfc/rfc9110.html#name-range-requests

Weitere Spezifikationen

Accept-Ranges Header, Content-Range Header, If-Range Header