HTTP Status 416 - Range Not Satisfiable

Der HTTP-Status-Code 416 Range Not Satisfiable signalisiert, dass Server den Request nicht erfüllen kann, weil der Range-Header-Wert außerhalb der verfügbaren Resource-Größe liegt. Typisch bei Video-Streaming, Resume-Downloads und Partial-Content-Requests. Server kennt Content-Length, aber Client fordert ungültige Byte-Range an.

Typ

Response-Status-Code

Syntax

Der Status Code wird zurückgegeben bei ungültigen Range-Requests.

http
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */1024

Direktiven

Der 416 Range Not Satisfiable Status Code wird verwendet bei invaliden Range-Requests.

Invalid Byte Range
Client fordert Range an, die außerhalb der Resource-Größe liegt (z.B. bytes=2000-3000 bei 1024-Byte-File). Server kann Request nicht mit Partial Content erfüllen.
Content-Range Header Required
Response muss Content-Range-Header mit Format bytes */SIZE enthalten. Zeigt Client die tatsächliche Resource-Größe, ermöglicht Retry mit korrekter Range.
Resume Download Failure
Typisch wenn Client Download resumed mit veralteter Content-Length-Info (File wurde zwischenzeitlich verkleinert oder gelöscht). Client muss kompletten Download neu starten.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für Status 416.

Beispiel 1 Range Beyond File Size

http
GET /videos/tutorial.mp4 HTTP/1.1
Host: cdn.example.com
Range: bytes=5000000-5999999

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */2048576
Content-Type: application/json

{
  "error": "range_not_satisfiable",
  "message": "Requested range exceeds file size",
  "file_size": 2048576,
  "requested_range": "5000000-5999999"
}

Beispiel 2 Resume Download with Outdated Info

http
GET /downloads/software-v2.zip HTTP/1.1
Host: api.example.com
Range: bytes=10485760-

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */8388608
Accept-Ranges: bytes

{
  "error": "invalid_resume_position",
  "message": "File was modified, restart download from beginning",
  "current_size": 8388608
}

Beispiel 3 Multiple Ranges with Invalid Bounds

http
GET /api/report.pdf HTTP/1.1
Host: api.example.com
Range: bytes=0-999,2000-2999,10000-19999

HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */5120
Content-Type: application/json

{
  "error": "range_not_satisfiable",
  "message": "One or more ranges exceed document size",
  "document_size": 5120,
  "invalid_ranges": ["10000-19999"]
}

Range Request Validation Flow

416 Range Not Satisfiable bei invalider Byte-Range

Vorteile für die Systemarchitektur

  • Bandwidth Efficiency: Client erfährt sofort, dass Range ungültig ist. Verhindert Transfer von vollständiger Resource wenn nur Partial Content benötigt wird.
  • Resume Capability Feedback: Content-Range-Header zeigt aktuelle Resource-Größe. Client kann Download-Resume-Logic mit korrekten Bounds implementieren.
  • Streaming Optimization: Video-Player und Download-Manager können Range-Requests dynamisch anpassen basierend auf Server-Feedback. Unterstützt adaptive Streaming-Strategien.

Spezifikation

RFC 9110, Section 15.5.17 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html#name-416-range-not-satisfiable

Weitere Spezifikationen

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