Obsah

    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.

    416 - Range Not Satisfiable

    Příčiny vzniku status kódu 416

    1. 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.

    2. Absence dat na serveru

      Situace, kdy byl zdroj odstraněn nebo změněn, a požadovaný rozsah je větší než dostupná data.

    3. 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.