Odpověď serveru 416 Range Not Satisfiable
HTTP status kód 416 (Range Not Satisfiable)
HTTP status kód 416 označuje, že požadovaný rozsah dat nemůže být splněn. K tomu dochází, když klient žádá o část zdroje, ale specifikovaný rozsah přesahuje dostupná data na serveru. V tomto článku se podíváme na příčiny vzniku tohoto status kódu, praktické příklady a způsoby, jak chyby opravit v různých programovacích jazycích.
Příčiny vzniku status kódu 416
- Nesprávně zadaný rozsah
Klient může udělat chybu při specifikaci rozsahu, například může požádat o rozsah, který překračuje velikost souboru.
- Absence dat na serveru
Situace, kdy byl zdroj odstraněn nebo změněn, a požadovaný rozsah je větší než dostupná data.
- Nesprávné hlavičky
Nesprávně nastavené hlavičky
Range
mohou vést k této chybě.
Praktické příklady
- Příklad s audiofilem
Klient žádá o rozsah, který přesahuje délku audio souboru. Například pokud audio soubor má 300 sekund, ale klient žádá o rozsah 300-400.
- Příklad s obrázkem
Žádost o část obrázku, který byl změněn, a klient neví o nových rozměrech. Pokud byl obrázek zmenšen a klient žádá o část, která již neexistuje.
- Příklad s textovým souborem
Žádost o textový soubor, kde specifikovaný rozsah překračuje velikost souboru. Například soubor má 1000 znaků a klient žádá o rozsah 1000-1500.
Oprava chyby 416 v různých programovacích jazycích
Python (s použitím knihovny requests)
import requests
url = "http://example.com/soubor.mp3"
headers = {"Range": "bytes=300-400"}
response = requests.get(url, headers=headers)
if response.status_code == 416:
print("Požadovaný rozsah není dostupný.")
JavaScript (s použitím Fetch API)
fetch("http://example.com/soubor.jpg", {
method: "GET",
headers: {
"Range": "bytes=1000-1500"
}
}).then(response => {
if (response.status === 416) {
console.log("Požadovaný rozsah není dostupný. Opravuji rozsah...");
// Oprava rozsahu
}
});
PHP (s použitím cURL)
$ch = curl_init("http://example.com/soubor.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: bytes=1000-1500"));
$response = curl_exec($ch);
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
echo "Požadovaný rozsah není dostupný. Změňte rozsah.";
}
curl_close($ch);
Příčina | Popis |
---|---|
Nesprávně zadaný rozsah | Klient požaduje rozsah, který překračuje velikost souboru. |
Absence dat | Zdroj byl odstraněn nebo změněn, požadovaný rozsah je větší než dostupná data. |
Nesprávné hlavičky | Nesprávně nastavené hlavičky Range způsobují chybu. |