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 RedirectJak go wysłać
| Node.js / Express | res.redirect(307, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=307) |
| nginx | return 307 https://example.com$request_uri; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/