Przegląd 301
, 302
i307
RFC 7231 , prąd odniesienia semantyki i zawartości HTTP / 1.1, definiuje 301
(przeniesiony na stałe) i 302
(stwierdzono) kod stanu, który umożliwia sposób żądanie być zmieniane POST
w celu GET
. Ta specyfikacja definiuje również 307
kod stanu (Przekierowanie tymczasowe), który nie pozwala na zmianę metody żądania z POST
na GET
.
Zobacz więcej szczegółów poniżej:
6.4.2. 301 wyprowadził się permamentnie
Kod stanu 301
(Przeniesiony na stałe) wskazuje, że do zasobu docelowego został przypisany nowy stały identyfikator URI, a wszelkie przyszłe odwołania do tego zasobu powinny używać jednego z dołączonych identyfikatorów URI. […]
Uwaga: Ze względów historycznych agent użytkownika MOŻE zmienić metodę żądania z POST
na GET
dla kolejnego żądania. Jeśli to zachowanie jest niepożądane, 307
można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).
6.4.3. 302 Znaleziono
302
(Found) kod stanu wskazuje, że zasób docelowy przebywa tymczasowo pod innym URI. Ponieważ przekierowanie może być czasami zmieniane, klient powinien nadal używać skutecznego identyfikatora URI żądania dla przyszłych żądań. […]
Uwaga: Ze względów historycznych agent użytkownika MOŻE zmienić metodę żądania z POST
na GET
dla kolejnego żądania. Jeśli to zachowanie jest niepożądane, 307
można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).
6.4.7. 307 Tymczasowe przekierowanie
Kod stanu 307
(Przekierowanie tymczasowe) wskazuje, że zasób docelowy znajduje się tymczasowo pod innym identyfikatorem URI, a agent użytkownika NIE MOŻE zmieniać metody żądania, jeśli wykonuje automatyczne przekierowanie do tego identyfikatora URI. Ponieważ przekierowanie może się zmieniać w czasie, klient powinien nadal używać oryginalnego skutecznego identyfikatora URI żądania dla przyszłych żądań. […]
Uwaga: ten kod stanu jest podobny do 302
(Znaleziono), z tą różnicą, że nie pozwala na zmianę metody żądania z POST
na GET
. Ta specyfikacja nie definiuje równoważnego odpowiednika dla 301
(Przeniesiono na stałe) ( RFC 7238 definiuje jednak 308
w tym celu kod statusu (Permanent Redirect)).
Potrzeba 308
Dokument RFC 7238 został utworzony w celu zdefiniowania 308
kodu stanu (Permanent Redirect), który jest podobny do 301
(Moved Permanently), ale nie pozwala na zmianę metody żądania z POST
na GET
.
308
Kod stanu jest teraz zdefiniowany przez RFC 7538 (który zastąpiony w RFC 7238 ).
3. 308 Stałe przekierowanie
Kod stanu 308
(Permanent Redirect) wskazuje, że do zasobu docelowego został przypisany nowy stały identyfikator URI, a wszelkie przyszłe odwołania do tego zasobu powinny używać jednego z dołączonych identyfikatorów URI. Klienci z możliwością edycji linków powinni automatycznie ponownie łączyć odniesienia do efektywnego identyfikatora URI żądania z jednym lub większą liczbą nowych odniesień wysłanych przez serwer, jeśli to możliwe. […]
Uwaga: ten kod stanu jest podobny do 301
(Przeniesiono na stałe), z tą różnicą, że nie pozwala na zmianę metody żądania z
POST
na GET
.
Oto mamy:
+-----------+-----------+
| Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET | 301 | 302 |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308 | 307 |
+------------------------------------------------------------+-----------+-----------+
Wybór najbardziej odpowiedniego kodu statusu
Michael Kropat przygotował zestaw wykresów decyzyjnych, które pomagają określić najlepszy kod statusu dla każdej sytuacji. Zobacz następujące informacje 2xx
i 3xx
kody stanu: