307 Temporary Redirect

Powtórz to samo żądanie pod innym URL-em.

Kiedy go używać

Tymczasowe przekierowanie, które musi zachować metodę i treść.

Warto wiedzieć

307 gwarantuje, że klient powtórzy tę samą metodę i treść pod nowym URL-em, więc POST pozostaje POST-em. Dlatego nadaje się do tymczasowego przenoszenia endpointów API. „Wewnętrzne” 307 zobaczysz też w Chrome DevTools, gdy działa HSTS: przeglądarka sama zmienia http:// na https://, bez kontaktu z serwerem, i oznacza to jako Non-Authoritative Reason: HSTS.

Wyszukiwarki traktują 307 jako tymczasowe, jak 302, a przeglądarki nie cache'ują go bez jawnych nagłówków. Treść musi dać się wysłać ponownie: fetch ze strumieniową treścią ReadableStream nie może podążyć za 307 i kończy się błędem. Przeglądarki i curl usuwają nagłówek Authorization, gdy przekierowanie prowadzi na inny host; curl zachowuje go tylko z --location-trusted. Użyj curl -L, by podążyć za przekierowaniem, a metoda zostanie zachowana automatycznie.

Przekierowanie (3xx)

Kody 3xx to przekierowania: aby dokończyć żądanie, klient musi przejść gdzie indziej albo użyć kopii z pamięci podręcznej.

Jak to wygląda

HTTP/1.1 307 Temporary Redirect

Jak go wysłać

Node.js / Expressres.redirect(307, '/new-url')
Python / Flaskreturn redirect('/new-url', code=307)
nginxreturn 307 https://example.com$request_uri;

Jak go sprawdzić

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Otwórz narzędzie Kody statusu HTTP