Przekierowanie 307 (Temporary Redirect) to kod odpowiedzi HTTP informujący, że zasób jest chwilowo dostępny pod innym adresem. W odróżnieniu od starszego kodu 302 gwarantuje, że przeglądarka powtórzy żądanie tą samą metodą i z tą samą treścią, więc formularz wysłany przez POST nie zamieni się w zwykłe GET.
Czym 307 różni się od 302?
Oba kody oznaczają zmianę tymczasową, ale dawne przeglądarki traktowały 302 niejednoznacznie i często zmieniały POST na GET. Kod 307 usuwa tę niejednoznaczność: metoda i ciało żądania pozostają bez zmian. Dla wyszukiwarki znaczenie jest takie samo jak przy 302, czyli adres źródłowy pozostaje w indeksie, bo przeniesienie nie jest stałe.
307 w przeglądarce i HSTS
Z kodem 307 zetkniesz się w narzędziach deweloperskich, gdy strona korzysta z HSTS. Przeglądarka sama, bez kontaktu z serwerem, zamienia wtedy adres HTTP na HTTPS i pokazuje to jako „307 Internal Redirect”. Nie jest to więc błąd konfiguracji, tylko skutek zapamiętanej reguły bezpieczeństwa.
Kiedy użyć 307?
Kod sprawdza się przy chwilowych przekierowaniach API i formularzy, np. podczas prac serwisowych lub przenoszenia zasobu na czas testów. Dla zwykłych podstron z treścią wystarcza 302, a gdy zmiana jest ostateczna, trzeba użyć 301 albo 308.