Co dokładnie oznacza HTTP / 1.1 302?


120

W pewnym artykule, który przeczytałem, powiedziano kiedyś, że oznacza to przeskakiwanie (z jednego URI do drugiego), ale wykryłem to „302” nawet wtedy, gdy w rzeczywistości nie było żadnych skoków!


1
W dokumentacji wc3.org mogą znajdować się dobre informacje na ten temat .
Copas

2
Zwróć szczególną uwagę: example.com example.com i example.com są logicznie różne, a witryna, do której chcesz uzyskać dostęp za pośrednictwem jednego adresu URL, może w tym celu przekierowywać między sobą. Oczywiście przekierowania 302 to kiepski wybór ... ale być może zauważyłeś podobnie subtelne odmiany.
Shog9

Odpowiedzi:


74

Przekierowanie 302 oznacza, że ​​strona została tymczasowo przeniesiona, a 301 oznacza, że ​​została przeniesiona na stałe.

301 są dobre dla wartości SEO, podczas gdy 302 nie są, ponieważ 301 instruują klientów, aby zapomnieli o wartości oryginalnego adresu URL, podczas gdy 302 zachowuje wartość oryginału i może w ten sposób potencjalnie zmniejszyć wartość, tworząc dwa logicznie różne adresy URL, które każdy z nich tworzy tę samą treść (wyszukiwarki widzą je jako odrębne duplikaty, a nie jako pojedynczy zasób o dwóch nazwach).


58

To pytanie zostało zadane dawno temu, gdy RFC 2616 wciąż się kręcił. Część odpowiedzi na to pytanie opiera się na takim dokumencie, który obecnie nie jest już aktualny. Cytując Marka Nottinghama, który w czasie pisania tego tekstu współprzewodniczył grupom roboczym IETF HTTP i QUIC:

Nie używaj RFC2616 . Usuń go z dysków twardych, zakładek i nagraj (lub odpowiedzialnie poddaj recyklingowi) wszelkie wydrukowane kopie.

Stary RFC 2616 został wyparty przez następujące dokumenty, które razem definiują protokół HTTP / 1.1:

Dlatego staram się udzielić odpowiedzi w oparciu o RFC 7231, który jest aktualnym odniesieniem dla kodów statusu HTTP / 1.1.

302Kod statusu

Odpowiedź z 302to typowy sposób przekierowania adresu URL. Wraz z 302kodem stanu odpowiedź powinna zawierać Locationnagłówek z innym identyfikatorem URI. Taki nagłówek zostanie przeanalizowany przez klienta użytkownika, a następnie wykona przekierowanie:


Przykład przekierowania


Przeglądarki internetowe mogą zmienić się z POSTna GETw kolejnym żądaniu. Jeśli to zachowanie jest niepożądane, 307można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).

Oto 302definicja kodu statusu w dokumencie RFC 7231 :

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ń.

Serwer POWINIEN wygenerować Locationpole nagłówka w odpowiedzi zawierające odniesienie URI dla innego URI. Agent użytkownika MOŻE użyć Locationwartości pola do automatycznego przekierowania. Ładunek odpowiedzi serwera zazwyczaj zawiera krótką notatkę hipertekstową z hiperłączem do różnych identyfikatorów URI.

Uwaga: Ze względów historycznych agent użytkownika MOŻE zmienić metodę żądania z POSTna GETdla kolejnego żądania. Jeśli to zachowanie jest niepożądane, 307można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).

Zgodnie z dokumentacją internetową MDN z Mozilli , typowy przypadek użycia 302to:

Strona internetowa jest tymczasowo niedostępna z powodów, których nie przewidziano. W ten sposób wyszukiwarki nie aktualizują swoich linków.

Inne kody stanu do przekierowania

W RFC 7231 definiuje następujące kody do przekierowania:

  • 301 (Przeniesione na stałe)
  • 302 (Znaleziony)
  • 307 (Tymczasowe przekierowanie)

Dokument RFC 7238 został utworzony w celu zdefiniowania innego kodu stanu dla przekierowania:

  • 308 (Stałe przekierowanie)

Więcej informacji można znaleźć w tej odpowiedzi .


2
Cóż, mój ból dwóch dni jest ponad thx dla ciebie ( Locationnagłówek był tym, co mi pomogło). Okazuje się, że dzwoniłem do serwisu, httpa oni się przenieśli https, jedyne, co otrzymałem w odpowiedzi 302, to jak tylko przeczytałem Locationtutaj nagłówek, zobaczyłem http/httpsróżnicę. Dziękuję Ci!
Eugene

Mam ten sam powód tego błędu. Mój JavaScript wskazał niewłaściwą lokalizację https, więc przekierowanie nie powiodło się. Dziękuje za komentarz.
Max

25

Prosty sposób spojrzenia na przekierowania HTTP 301 i 302 to:

Załóżmy, że masz zakładkę „ http://sample.com/sample ”. Aby tam przejść, używasz przeglądarki.

Przekierowanie 302 do innego adresu URL w tym momencie oznaczałoby, że powinieneś zachować zakładkę na „ http://sample.com/sample ”. Dzieje się tak, ponieważ docelowy adres URL może się zmienić w przyszłości.

Przekierowanie 301 na inny adres URL oznaczałoby, że zakładka powinna się zmienić i wskazywać na nowy adres URL, ponieważ jest to stałe przekierowanie.


9

Z RFC 2616 (specyfikacja protokołu transmisji hipertekstu) :

10.3.3 302 Znaleziono

   Żądany zasób znajduje się tymczasowo pod innym identyfikatorem URI.
   Ponieważ przekierowanie może być czasami zmieniane, klient POWINIEN
   nadal używać Request-URI dla przyszłych żądań. Ta odpowiedź
   można zapisywać w pamięci podręcznej tylko wtedy, gdy jest to wskazane w nagłówku Cache-Control lub Expires
   pole.

   Tymczasowy URI POWINIEN być podany w polu Lokalizacja w
   odpowiedź. O ile metoda żądania nie była HEAD, jednostka
   odpowiedź POWINNA zawierać krótką notatkę hipertekstową z hiperłączem do
   nowe identyfikatory URI.

Źródło:

http://www.ietf.org/rfc/rfc2616.txt


6

Z Wikipedii :

Kod stanu odpowiedzi HTTP 302 Found to najpowszechniejszy sposób wykonywania przekierowania. Jest to przykład praktyki przemysłowej sprzecznej z normą.



5

302 to odpowiedź wskazująca na zmianę lokalizacji zasobu - „Znaleziono”.

Adres URL, pod którym powinien się teraz znajdować zasób, powinien znajdować się w nagłówku odpowiedzi „Lokalizacja”.

„Skok” powinien zostać wykonany przez żądającego klienta (zrób nowe żądanie na adres URL zasobu w polu nagłówka lokalizacji odpowiedzi).


5

Pod względem SEO 301 i 302 są dobre, zależy to od sytuacji,

Jeśli można zwrócić tylko jedną wersję (tj. Druga przekierowuje do niej), to świetnie! To zachowanie jest korzystne, ponieważ zmniejsza liczbę powielonych treści. W szczególnym przypadku przekierowań do końcowych adresów URL z ukośnikiem nasze wyniki wyszukiwania prawdopodobnie pokażą wersję adresu URL z kodem odpowiedzi 200 (najczęściej końcowym adresem URL z ukośnikiem) - niezależnie od tego, czy przekierowanie było 301 czy 302.



1

Zgodnie z RFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • Kod 302 wskazuje tymczasowe przekierowanie .
  • Jedną z najbardziej godnych uwagi cech odróżniających ją od przekierowania 301 jest to, że w przypadku przekierowań 302 siła SEO nie jest przenoszona na nowy adres URL.
  • Dzieje się tak, ponieważ to przekierowanie zostało zaprojektowane do użycia, gdy istnieje potrzeba przekierowania treści na stronę, która nie będzie ostateczna. Dzięki temu po wyeliminowaniu przekierowania oryginalna strona nie utraci swojej pozycji w wyszukiwarce Google.

PRZYKŁAD: - Chociaż rzadko zdarza się, że potrzebujemy przekierowania 302, ta opcja może być bardzo przydatna w niektórych przypadkach. Oto najczęstsze przypadki:

  • Gdy zdamy sobie sprawę, że na stronie znajdują się nieodpowiednie treści. Podczas rozwiązywania problemu możemy przekierować użytkownika na inną stronę, która może być interesująca.
  • W przypadku, gdy atak na naszą witrynę internetową wymaga przywrócenia którejkolwiek ze stron, to przekierowanie może pomóc nam zminimalizować incydent.

Przekierowanie 302 to kod, który informuje odwiedzających o określonym adresie URL, że strona została tymczasowo przeniesiona, kierując ich bezpośrednio do nowej lokalizacji.

  • Innymi słowy, przekierowanie 302 jest aktywowane, gdy roboty Google lub inne wyszukiwarki żądają załadowania określonej strony. W tym momencie dzięki temu przekierowaniu serwer zwraca automatyczną odpowiedź wskazującą nowy adres URL.

  • W ten sposób unika się błędów i uciążliwości zarówno dla wyszukiwarek, jak i użytkowników, gwarantując płynną nawigację.

Więcej informacji można znaleźć w tym artykule .


0

Kod stanu 302 to kod stanu odpowiedzi HTTP wskazujący, że żądany zasób został tymczasowo przeniesiony do innego identyfikatora URI. Ponieważ dyrektywa dotycząca lokalizacji lub bieżącego przekierowania może zostać zmieniona w przyszłości, klient, który otrzyma kod odpowiedzi 302 Found, powinien nadal używać oryginalnego identyfikatora URI dla przyszłych żądań.

Odpowiedź HTTP z tym kodem stanu będzie dodatkowo zawierać adres URL w polu nagłówka Lokalizacja. Jest to zaproszenie do klienta użytkownika (np. Przeglądarki internetowej) do wykonania drugiego, poza tym identycznego, żądania do nowego adresu URL określonego w polu lokalizacji. Efektem końcowym jest przekierowanie do nowego adresu URL.


0

Dla każdego, kto może być ciekawy nazewnictwa, dodam tylko, że prawdopodobnie nazywa się ono „Znaleziono”, ponieważ główny zasób (np. Prywatna strona internetowa), który użytkownik zamierza otrzymać, nie jest w tym momencie dostępny (np. użytkownik nie udowodnił jeszcze swojej tożsamości), więc zamiast tego serwer znalazł nowy zasób, który użytkownik może otrzymać (jest to strona logowania w najczęściej stosowanym przypadku).

Jest to również „gubienie się i znajdowanie” w chowanego, co oznacza, że ​​utracony zasób poniżej statusu 302 jest tracony tylko tymczasowo , nie powinien być stracony na zawsze (chyba że gracz ma złe intencje;)).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.