HTTP Content-Range Header

Der HTTP-Header Content-Range ist ein Response-Header bei Partial Responses (206 Partial Content), der angibt, welcher Teil einer Ressource im Message Body enthalten ist. Er wird bei Range Requests verwendet, z.B. für Resume-fähige Downloads oder Video-Streaming.

Typ

Response-Header

Syntax

Der Header spezifiziert die übertragene Byte-Range und die Gesamtgröße der Ressource.

http
Content-Range: bytes 0-499/1234
Content-Range: bytes 500-999/1234
Content-Range: bytes */1234

Direktiven

Der Content-Range-Header beschreibt die Position und Größe des übertragenen Fragments.

unit
Die Einheit für die Range-Angabe, typischerweise "bytes". Andere Einheiten sind theoretisch möglich, werden aber selten verwendet.
range-start
Byte-Position des ersten übertragenen Bytes (0-basiert). Bei unvollständiger Übertragung kann "*" verwendet werden.
range-end
Byte-Position des letzten übertragenen Bytes (inklusiv). Zusammen mit range-start definiert dies die Fragment-Größe.
complete-length
Gesamtgröße der vollständigen Ressource in Bytes. Falls unbekannt, kann "*" verwendet werden.

Beispiele

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

Beispiel 1 Erste 500 Bytes

http
GET /api/files/video.mp4 HTTP/1.1
Range: bytes=0-499

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-499/102400
Content-Length: 500
Content-Type: video/mp4

[Binary Data: Bytes 0-499]

Beispiel 2 Resume Download

http
GET /api/downloads/large-file.zip HTTP/1.1
Range: bytes=10485760-

HTTP/1.1 206 Partial Content
Content-Range: bytes 10485760-20971519/20971520
Content-Length: 10485760

[Binary Data: Remaining bytes]

Beispiel 3 Multipart Range Response

http
HTTP/1.1 206 Partial Content
Content-Type: multipart/byteranges; boundary=BOUNDARY
Content-Range: bytes 0-50, 100-150/1000

--BOUNDARY
Content-Range: bytes 0-50/1000

[First Range Data]
--BOUNDARY
Content-Range: bytes 100-150/1000

[Second Range Data]
--BOUNDARY--

Range Request Flow

Range Request für Resumable Download

Vorteile für die Systemarchitektur

  • Resumable Transfers: Unterbrochene Downloads oder Uploads können fortgesetzt werden ohne erneute Übertragung bereits empfangener Daten
  • Bandbreiten-Effizienz: Clients können große Dateien in Chunks laden und Streaming-Anwendungen optimieren
  • Progressive Loading: Video- und Audio-Streaming wird ermöglicht durch Byte-Range-Zugriff auf Mediendateien

Spezifikation

RFC 9110, Section 14.4 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html#name-content-range

Weitere Spezifikationen

Range Header, Accept-Ranges Header, HTTP Status 206 - Partial Content