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!
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!
Odpowiedzi:
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).
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.
302
Kod statusuOdpowiedź z 302
to typowy sposób przekierowania adresu URL. Wraz z 302
kodem stanu odpowiedź powinna zawierać Location
nagłówek z innym identyfikatorem URI. Taki nagłówek zostanie przeanalizowany przez klienta użytkownika, a następnie wykona przekierowanie:
Przeglądarki internetowe mogą zmienić się z POST
na GET
w kolejnym żądaniu. Jeśli to zachowanie jest niepożądane, 307
można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).
Oto 302
definicja kodu statusu w dokumencie RFC 7231 :
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ć
Location
pole nagłówka w odpowiedzi zawierające odniesienie URI dla innego URI. Agent użytkownika MOŻE użyćLocation
wartoś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
POST
naGET
dla kolejnego żądania. Jeśli to zachowanie jest niepożądane,307
można zamiast tego użyć kodu stanu (Przekierowanie tymczasowe).
Zgodnie z dokumentacją internetową MDN z Mozilli , typowy przypadek użycia 302
to:
Strona internetowa jest tymczasowo niedostępna z powodów, których nie przewidziano. W ten sposób wyszukiwarki nie aktualizują swoich linków.
W RFC 7231 definiuje następujące kody do przekierowania:
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 .
Location
nagłówek był tym, co mi pomogło). Okazuje się, że dzwoniłem do serwisu, http
a oni się przenieśli https
, jedyne, co otrzymałem w odpowiedzi 302
, to jak tylko przeczytałem Location
tutaj nagłówek, zobaczyłem http/https
różnicę. Dziękuję Ci!
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.
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:
Z Wikipedii :
Kod stanu odpowiedzi HTTP 302 Found to najpowszechniejszy sposób wykonywania przekierowania. Jest to przykład praktyki przemysłowej sprzecznej z normą.
Zgodnie z definicjami kodu statusu http, a 302 wskazuje (tymczasowe) przekierowanie. „Żądany zasób znajduje się tymczasowo pod innym identyfikatorem URI”
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).
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.
Kod HTTP 302 służy do przekierowania, patrz http://en.wikipedia.org/wiki/HTTP_302 .
Mówi przeglądającemu czytającemu stronę, aby udał się gdzie indziej i załadował inną stronę. Jego użycie jest bardzo powszechne.
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.
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:
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 .
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.
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;)).