Pobierz wynik z innego URL-a za pomocą GET.
Kiedy go używać
Przekierowanie po wysłaniu formularza metodą POST, aby odświeżenie strony nie wysłało go ponownie.
Warto wiedzieć
303 to właściwy kod dla wzorca Post/Redirect/Get: po wysłaniu formularza metodą POST przekieruj na stronę wyniku kodem 303, żeby przeglądarka załadowała ją przez GET, a odświeżenie strony czy przycisk Wstecz nie wysłały formularza ponownie. W przeciwieństwie do 302 specyfikacja gwarantuje przejście na GET dla każdej pierwotnej metody, także PUT i DELETE, a treść żądania jest odrzucana.
Wyszukiwarki traktują 303 jak przekierowanie tymczasowe, ale rzadko pojawia się ono na URL-ach dostępnych dla crawlerów. Nie jest cache'owane, chyba że nagłówki mówią inaczej. W API 303 może przenieść klienta z zakończonego zadania asynchronicznego do jego wyniku. fetch podąża za nim automatycznie w domyślnym trybie redirect; response.redirected mówi, że nastąpiło przekierowanie, a response.url podaje docelowy adres po GET.
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 303 See OtherJak go wysłać
| Node.js / Express | res.redirect(303, '/new-url') |
|---|---|
| Python / Flask | return redirect('/new-url', code=303) |
| nginx | return 303 https://example.com$request_uri; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/