Obsah

    Odpověď serveru 308 Permanent Redirect

    Definice statusu 308

    Statusový kód 308 (Permanent Redirect) označuje trvalé přesměrování a slouží k indikaci, že zdroj byl přesunut na nový URI. Na rozdíl od jiných přesměrování, jako jsou 301, 302 a 303, si tento kód zachovává metodu požadavku (například POST) při následných požadavcích na nový URI.

    308 - Permanent Redirect

    Co je to statusový kód 308

    Statusový kód 308 je součástí protokolu HTTP a slouží jako trvalé přesměrování. Tento kód informuje klienta, že by měl pokračovat na jiný URI, a to bez změny metody požadavku. Tím se zajišťuje, že například při odesílání formulářových dat zůstane metoda POST zachována.

    Hlavní rozdíly od jiných přesměrování

    • 301 (Moved Permanently): Představuje trvalé přesměrování, ale mění metodu požadavku na GET.
    • 302 (Found): Dočasné přesměrování, které také mění metodu na GET, pokud není specifikováno jinak.
    • 303 (See Other): Indikuje, že klient by měl provést nový GET požadavek na jiném URI, bez ohledu na metodu původního požadavku.

    Scénáře použití statusu 308

    1. Při migraci webových stránek na novou doménu, kdy je důležité zachovat metodu původního požadavku.
    2. Ve webových aplikacích při ukládání dat, kdy je potřeba zachovat POST metodu i po přesměrování.
    3. Při vytváření API, kde je nutné trvale přesměrovat API volání na nový endpoint bez změny metody.

    Příklady praktického použití

    Příklad přesměrování z webu na jinou doménu

    Pokud máte webovou stránku, která se přesunula na novou doménu, můžete použít status 308 k přesměrování uživatelů:

    HTTP/1.1 308 Permanent Redirect
    Location: https://novadomena.cz

    Scénář použití ve webových aplikacích pro ukládání dat

    Pokud uživatel odesílá formulář a je potřeba jej přesměrovat na potvrzovací stránku, můžete použít 308:

    HTTP/1.1 308 Permanent Redirect
    Location: https://example.com/confirmation

    Použití 308 v API pro trvalé přesměrování požadavků

    Pokud API endpoint mění umístění, můžete použít 308 pro trvalé přesměrování:

    HTTP/1.1 308 Permanent Redirect
    Location: https://api.example.com/new-endpoint

    Chyby spojené s kódem 308

    Důvody vzniku chyb s 308 statusem

    • Přesměrování na neexistující URI.
    • Nesprávná konfigurace serveru.
    • Problémy s klientskou aplikací, která neakceptuje 308 status.

    Jak určit, že chyba souvisí se statusem 308

    Pokud dostáváte chybové hlášení při pokusu o přístup k novému URI, můžete zkontrolovat odpověď serveru a hledat status 308. To vám pomůže identifikovat problém s přesměrováním.

    Oprava chyb v různých programovacích jazycích

    JavaScript (Node.js)

    Příklad kódu s použitím Express pro zpracování 308 přesměrování:

    app.post('/old-endpoint', (req, res) => {
      res.redirect(308, '/new-endpoint');
    });

    Jak správně nastavit přesměrování se zachováním metody:

    app.use((req, res, next) => {
      if (req.method === 'POST') {
        res.redirect(308, '/new-endpoint');
      } else {
        next();
      }
    });

    Python (Flask)

    Příklad kódu pro implementaci 308 přesměrování v Flask:

    from flask import Flask, redirect
    
    app = Flask(__name__)
    
    @app.route('/old-endpoint', methods=['POST'])
    def old_endpoint():
        return redirect('/new-endpoint', code=308)

    PHP

    Příklad použití funkce header() pro nastavení statusu 308:

    header('Location: https://example.com/new-endpoint', true, 308);
    exit;

    Jak správně zpracovávat přesměrování v PHP:

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        header('Location: https://example.com/new-endpoint', true, 308);
        exit;
    }

    Testování a ladění přesměrování

    Nástroje pro kontrolu přesměrování

    Mezi nejoblíbenější nástroje patří cURL a Postman, které umožňují testovat HTTP požadavky a sledovat odpovědi serveru.

    Nástroj Popis
    cURL Konzolový nástroj pro odesílání HTTP požadavků.
    Postman Grafický nástroj pro testování API a HTTP požadavků.

    Jak se ujistit, že přesměrování funguje správně a zachovává metodu požadavku

    Při testování přesměrování je důležité zkontrolovat, zda server vrací správný status 308 a zda se metoda požadavku nezměnila. To lze ověřit pomocí výše uvedených nástrojů.

    Doporučení pro použití statusu 308

    Kdy použít 308 místo 301 nebo 302

    Status 308 by měl být použit v situacích, kdy je nutné trvalé přesměrování a zachování metody požadavku je klíčové, například při odesílání formulářů nebo API volání.

    Nejlepší praktiky při implementaci přesměrování v aplikacích

    • Vždy kontrolujte, zda je nový URI správný a funkční.
    • Testujte přesměrování v různých scénářích a metodách požadavků.
    • Dokumentujte přesměrování pro další vývojáře a uživatele API.