Serverrespons 416 Range Not Satisfiable
HTTP Statuscode 416 (Range Not Satisfiable)
HTTP-statuscode 416 geeft aan dat de server niet in staat is om het aangevraagde gegevensbereik te voldoen. Dit gebeurt meestal wanneer een client een deel van een bron opvraagt, maar het opgegeven bereik ligt buiten de beschikbare gegevens. In deze tekst bespreken we de oorzaken van deze statuscode, praktische voorbeelden en manieren om fouten in verschillende programmeertalen op te lossen.
Oorzaken van Statuscode 416
- Onjuist opgegeven bereik
Een client kan een fout maken bij het opgeven van een bereik, zoals het aanvragen van een bereik dat groter is dan de bestandsgrootte.
- Ontbrekende gegevens op de server
Dit kan gebeuren wanneer de bron is verwijderd of gewijzigd, waardoor het aangevraagde bereik groter is dan de beschikbare gegevens.
- Onjuiste headers
Een verkeerd ingestelde
Range
-header kan leiden tot een fout bij het opvragen van gegevens.
Praktische Voorbeelden
- Voorbeeld met een audiobestand
Stel dat een client een bereik aanvraagt dat groter is dan de lengte van een audiobestand. De aanvraag kan eruitzien als:
GET /audio.mp3 HTTP/1.1 Range: bytes=1000000-
De server zal dan met een 416-statuscode reageren.
- Voorbeeld met een afbeelding
Als een client een deel van een afbeelding aanvraagt die is gewijzigd, kan de aanvraag er als volgt uitzien:
GET /image.jpg HTTP/1.1 Range: bytes=0-5000
Als de afbeelding is verkleind, kan dit resulteren in een 416-respons.
- Voorbeeld met een tekstbestand
Wanneer een tekstbestand wordt opgevraagd met een bereik dat buiten het bestand valt, bijvoorbeeld:
GET /textfile.txt HTTP/1.1 Range: bytes=50-100
Als het bestand minder dan 50 bytes bevat, zal de server een 416-statuscode retourneren.
Foutoplossing voor 416 in Verschillende Programmeertalen
Programmeertaal | Voorbeeldcode | Foutafhandeling |
---|---|---|
Python |
import requests response = requests.get('http://example.com/file.mp3', headers={'Range': 'bytes=0-500'}) if response.status_code == 416: print("Het aangevraagde bereik kan niet worden geleverd.") |
Controleer het bereik voordat je de aanvraag verzendt. |
JavaScript |
fetch('http://example.com/image.jpg', {headers: {'Range': 'bytes=0-1000'}}) .then(response => { if (response.status === 416) { console.log("De gevraagde range is niet beschikbaar."); } }); |
Pas het bereik aan op basis van de foutmelding. |
PHP |
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://example.com/textfile.txt'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Range: bytes=0-100')); curl_exec($ch); if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) { echo "Fout: het aangevraagde bereik is niet beschikbaar."; } |
Wijzig de aanvraag op basis van de ontvangen foutstatus. |
Statuscode 416 wijst op problemen met de onbeschikbaarheid van het aangevraagde gegevensbereik. Om deze status te vermijden, is het essentieel om de bereikparameters correct op te geven en mogelijke fouten aan de clientzijde goed af te handelen.