Serverantwort 416 Range Not Satisfiable
HTTP-Statuscode 416 (Range Not Satisfiable)
HTTP-Statuscode 416 zeigt an, dass der angeforderte Datenbereich nicht erfüllt werden kann. Dies geschieht, wenn ein Client versucht, einen Teil einer Ressource anzufordern, dessen angegebener Bereich über die verfügbaren Daten hinausgeht. In diesem Artikel werden die Ursachen des Statuscodes 416, praktische Beispiele und Methoden zur Fehlerbehebung in verschiedenen Programmiersprachen behandelt.
Ursachen für das Auftreten des Statuscodes 416
- Falsch angegebener Bereich
Ein Client kann einen Bereich anfordern, der den Dateigröße überschreitet. Zum Beispiel, wenn ein Client einen Bereich von 500-1000 anfordert, aber die Datei nur 300 Bytes groß ist.
- Fehlende Daten auf dem Server
Wenn eine Ressource gelöscht oder geändert wurde, kann der angeforderte Bereich größer sein als die verfügbaren Daten. Dies kann passieren, wenn eine Datei aktualisiert wird und der Client nicht über die Änderungen informiert ist.
- Fehlerhafte Header
Wenn die Range-Header nicht korrekt konfiguriert sind, kann dies zu einem 416-Fehler führen. Beispielsweise könnte der Header einen Bereich angeben, der nicht existiert.
Praktische Beispiele
- Beispiel mit einer Audiodatei
Ein Client sendet eine Anfrage, um den Bereich 100-200 eines Audiodateiformats abzurufen, das jedoch nur 150 Bytes groß ist. Die Serverantwort könnte wie folgt aussehen:
HTTP/1.1 416 Range Not Satisfiable
- Beispiel mit einem Bild
Ein Client versucht, einen Teil eines Bildes anzufordern, das kürzlich verkleinert wurde. Der angegebene Bereich könnte auf die alte Größe verweisen, was zu einem 416-Fehler führt.
- Beispiel mit einer Textdatei
Wenn ein Client eine Textdatei anfordert und der angegebene Bereich über die Länge der Datei hinausgeht, könnte die Antwort vom Server ebenfalls 416 sein.
Fehlerbehebung des Statuscodes 416 in verschiedenen Programmiersprachen
Python (mit der Bibliothek requests)
import requests url = "http://example.com/file" headers = {"Range": "bytes=500-1000"} response = requests.get(url, headers=headers) if response.status_code == 416: print("Fehler: Angeforderter Bereich kann nicht bereitgestellt werden.")
JavaScript (mit Fetch API)
fetch('http://example.com/file', { headers: { 'Range': 'bytes=500-1000' } }).then(response => { if (response.status === 416) { console.log("Fehler: Angeforderter Bereich kann nicht bereitgestellt werden."); } });
PHP (mit cURL)
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com/file"); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: bytes=500-1000")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) { echo "Fehler: Angeforderter Bereich kann nicht bereitgestellt werden."; } curl_close($ch);
Der Statuscode 416 zeigt Probleme mit der Verfügbarkeit des angeforderten Datenbereichs an. Um diesen Status zu vermeiden, ist es wichtig, die Bereiche korrekt anzugeben und mögliche Fehler auf der Client-Seite zu behandeln.
Fehlerursache | Beispiel | Fehlerbehebung |
---|---|---|
Falsch angegebener Bereich | Anforderung von 500-1000 bei 300 Bytes | Überprüfen der Dateigröße vor der Anforderung |
Fehlende Daten | Gelöschte oder verkleinerte Datei | Aktualisierung der Client-Anforderungen entsprechend |
Fehlerhafte Header | Unkorrekter Range-Header | Korrekte Header-Konfiguration sicherstellen |