302 znaleziony komunikat to HTTP response status code
wskazujący, że żądany zasób został tymczasowo przeniesiony do innego 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 URI dla przyszłych żądań.,
Niestety, może być trudno odróżnić wszystkie możliwe kody odpowiedzi HTTP i określić dokładną przyczynę błędów, takich jak kod 302 Found
. Istnieją dziesiątki możliwych kodów statusu HTTP używanych do reprezentowania złożonych relacji między Klientem, aplikacją internetową, serwerem internetowym i mnóstwem usług internetowych stron trzecich, które mogą być używane, więc określenie przyczyny określonego kodu statusu może być trudne., W tym artykule przeanalizujemy kod 302 Found
, patrząc na kilka wskazówek dotyczących rozwiązywania problemów, wraz z kilkoma potencjalnymi poprawkami typowych problemów, które mogą powodować ten problem w twoich własnych aplikacjach internetowych, więc przejdźmy do niego!
problem jest po stronie serwera
wszystkie kody statusu odpowiedzi HTTP, które znajdują się w kategorii 3xx
są brane pod uwagę redirection messages
. Takie kody wskazują agentowi użytkownika (tj. przeglądarce internetowej), że w celu realizacji żądania i uzyskania dostępu do żądanego zasobu wymagane jest dodatkowe działanie., W przeciwieństwie do client error responses
znalezionych w kodach 4xx
, takich jak 404 Not Found Error
zbadaliśmy ostatnio, które mogą wynikać z problemu po stronie klienta lub serwera, 302 Found
ogólnie oznacza problem na rzeczywistym serwerze hosting aplikacji.
To powiedziawszy, pojawienie się302 Found
zwykle nie jest czymś, co wymaga dużej interwencji użytkownika. Wszystkie nowoczesne przeglądarki automatycznie wykryją kod odpowiedzi 302 Found
I automatycznie przetworzą akcję tymczasowego przekierowania., Serwer WWW obsługujący aplikację zazwyczaj zawiera specjalny nagłówek Location
jako część odpowiedzi, którą wysyła do klienta. Ten nagłówekLocation
wskazuje nowy adres URL, w którym można znaleźć żądany zasób. Na przykład, Jeśli pojawi się żądanie dostępu do URL , ale serwer sieci Web jest skonfigurowany tak, aby wymusić przekierowanie do bezpiecznej wersji za pomocą
https
, odpowiedź serwera będzie zawierać nagłówek Location: https://airbrake.io
., Oznacza to, że przeglądarka powinna przekierować to pojedyncze żądanie do na zabezpieczony adres URL
. W większości przypadków przeglądarka automatycznie wykryje ten kod odpowiedzi
302 Found
, odczyta nowy adres URLLocation
I przekieruje żądanie do nowej lokalizacji.
ważne jest jednak, aby pamiętać, że kod odpowiedzi302 Found
jest używany do zupełnie innych celów niż301 Moved Permanently
, na który patrzyliśmy w zeszłym tygodniu., W przypadku pierwszego przekierowanie powinno być tymczasowe — tzn. tylko dla bieżącego, pojedynczego żądania) – przeglądarka powinna „zapamiętać” oryginalny URI i przetwarzać wszelkie przyszłe żądania używając tego samego URI. Jednak za pomocą kodu 301 Moved Permanently
przeglądarka jest informowana, że oryginalny URI nie jest już ważny, więc wszystkie przyszłe żądania powinny używać nowego URI dostarczonego przez nagłówek Location
.,
ponieważ302 Found
wskazuje, że coś poszło nie tak wserver
Twojej aplikacji, możemy w dużej mierze pominąć stronęclient
. Jeśli próbujesz zdiagnozować problem z własną aplikacją, możesz natychmiast zignorować większość kodu i komponentów po stronie klienta, takich jak HTML, kaskadowe arkusze stylów (CSS), JavaScript po stronie klienta i tak dalej. Nie dotyczy to również wyłącznie witryn internetowych., Wiele aplikacji na smartfony, które mają nowoczesny wygląd interfejsu użytkownika, jest w rzeczywistości zasilanych przez normalną aplikację internetową za kulisami; taką, która jest po prostu ukryta przed użytkownikiem. Jeśli używasz takiej aplikacji i wystąpi 302 Found
, problem nie będzie związany z aplikacją zainstalowaną na telefonie lub lokalnym urządzeniu testującym. Zamiast tego, będzie to coś po stronie serwera, który wykonuje większość logiki i przetwarzania za kulisami, poza zakresem lokalnego interfejsu przedstawionego użytkownikowi.,
Jeśli Twoja aplikacja generuje nieoczekiwane kody odpowiedzi302 Found
istnieje wiele kroków, które możesz wykonać, aby zdiagnozować problem.
zacznij od dokładnego backupu aplikacji
jak w przypadku czegokolwiek, lepiej grać bezpiecznie na początku niż coś spieprzyć i później żałować. W związku z tym ważne jest, aby wykonać pełną kopię zapasową aplikacji, bazy danych itp., Przed przystąpieniem do jakichkolwiek poprawek lub zmian w systemie., Co więcej, jeśli masz taką możliwość, Utwórz kompletną kopię aplikacji na drugim serwerze staging
, który nie jest „aktywny” lub nie jest w inny sposób aktywny i dostępny publicznie. Zapewni to czyste pole testowe, na którym można przetestować wszystkie potencjalne poprawki w celu rozwiązania problemu, bez zagrażania bezpieczeństwu lub świętości aplikacji na żywo.
diagnozowanie 302 znalezionych kodów odpowiedzi
a302 Found
kod odpowiedzi wskazuje, że żądany zasób powinien być tymczasowo dostępny pod innym URI., Jest jednak całkowicie możliwe, że serwer został źle skonfigurowany, powodując, że nieprawidłowo odpowiada kodami 302 Found
zamiast standardowego i oczekiwanego kodu200 OK
normalnego, funkcjonalnego żądania. Tak więc duża część diagnozowania problemu będzie przechodziła przez proces podwójnego sprawdzania, jakie zasoby / adresy URL generują 302 Found
kody odpowiedzi i określania, czy te kody są odpowiednie, czy nie.,
Jeśli Twoja aplikacja odpowiada302 Found
kodami, których nie powinna wydawać, jest to problem, który może napotkać również wielu innych użytkowników, znacznie utrudniając zdolność aplikacji do obsługi użytkowników. Omówimy kilka porad i wskazówek dotyczących rozwiązywania problemów, które pomogą Ci rozwiązać ten problem. Jeśli nic tutaj nie działa, nie zapominaj, że Google jest twoim przyjacielem. Spróbuj wyszukać konkretne terminy związane z Twoim problemem, takie jak nazwa oprogramowania CMS lub serwera www aplikacji, wraz z 302 Found
., Są szanse, że znajdziesz innych, którzy doświadczyli tego problemu i znaleźli rozwiązanie.
Rozwiązywanie problemów po stronie serwera
oto kilka dodatkowych wskazówek, które pomogą Ci rozwiązać problem, co może powodować, że 302 Found
pojawia się po stronie serwera:
Potwierdź konfigurację serwera
Twoja aplikacja prawdopodobnie działa na serwerze używającym jednego z dwóch najpopularniejszych programów serwerowych, Apache
lub nginx
., W momencie publikacji oba te serwery www tworzą over 84%
oprogramowania serwerów WWW na świecie! Dlatego jednym z pierwszych kroków, które możesz podjąć, aby określić, co może być przyczyną tych302 Found
kody odpowiedzi, jest sprawdzenie plików konfiguracyjnych oprogramowania serwera www pod kątem niezamierzonych instrukcji przekierowania.
aby określić, z którego serwera www korzysta Twoja aplikacja, poszukaj pliku klucza. Jeśli twoim serwerem jest Apache, poszukaj pliku .htaccess
w katalogu głównym systemu plików witryny., Na przykład, jeśli Twoja aplikacja jest na współdzielonym hoście, prawdopodobnie będziesz mieć nazwę użytkownika powiązaną z kontem hostingowym. W takim przypadku katalog główny aplikacji znajduje się zazwyczaj na ścieżce /home/<username>/public_html/
, więc plik .htaccess
powinien znajdować się w/home/<username>/public_html/.htaccess
.
Jeśli zlokalizowałeś plik.htaccess
, otwórz go w edytorze tekstu i poszukaj linii, które używają dyrektywRewriteXXX
, które są częścią modułumod_rewrite
w Apache., Jednak podstawowa koncepcja polega na tym, że dyrektywa RewriteCond
definiuje wzorzec tekstowy, który będzie dopasowany do wprowadzonych adresów URL. Jeśli odwiedzający stronę żąda pasującego adresu URL, do przeprowadzenia rzeczywistego przekierowania żądania na odpowiedni adres URL służy dyrektywa RewriteRule
, która następuje po jednej lub więcej dyrektyw RewriteCond
.,
na przykład, tutaj jest prosta RewriteCond
I RewriteRule
kombinacja, która dopasowuje wszystkie przychodzące żądania do example.com
I ustanawia tymczasowe przekierowanie do tego samego URI na temporary-example.com
zamiast domeny:
RewriteEngine onRewriteCond %{HTTP_HOST} ^example\.com$RewriteRule ^(.*)$ http://www.temporary-example.com/$1
zwróć uwagę na dodatkową flagę na końcu RewriteRule
, która wyraźnie stwierdza, że kod odpowiedzi powinien być 302
, wskazując agentom użytkowników (przeglądarkom), że jest to tymczasowe przekierowanie., Tak więc, jeśli znajdziesz jakieś dziwne dyrektywy RewriteCond
lub RewriteRule
w pliku .htaccess
, które wydają się nie należeć, spróbuj tymczasowo je skomentować (używając prefiksu #
) I uruchom ponownie swoją stronę internetową serwera, aby sprawdzić, czy to rozwiąże problem.
z drugiej strony, jeśli twój serwer działa na nginx
, musisz poszukać zupełnie innego pliku konfiguracyjnego., Domyślnie ten plik ma nazwę nginx.conf
I znajduje się w jednym z kilku popularnych katalogów: /usr/local/nginx/conf
, /etc/nginx
lub /usr/local/etc/nginx
. Po zlokalizowaniu otwórz nginx.conf
w edytorze tekstu i wyszukaj rewrite
dyrektywy, które używają znacznika redirect
. Na przykład, tutaj jest prosty block directive
(tj., nazwanego zestawu dyrektyw), który konfiguruje serwer wirtualny poprzez utworzenie tymczasowego przekierowania z example.com
do temporary-example.com
:
server { listen 80; listen 443 ssl; server_name www.example.com; rewrite ^/$ http://www.temporary-example.com redirect;}
Rewrite
dyrektyw w nginx
są podobne do dyrektyw RewriteCond
I RewriteRule
znalezionych w Apache
, ponieważ zawierają bardziej złożone wzorce tekstowe do wyszukiwania., Tak czy inaczej, przejrzyj pliknginx.conf
w poszukiwaniu anormalnych dyrektywrewrite
zawierających flagęredirect
(alternatywna flagapermanent
wyda301
kody odpowiedzi zamiast). Skomentuj wszelkie nieprawidłowości przed ponownym uruchomieniem serwera, aby sprawdzić, czy problem został rozwiązany.
Sprawdź nieaktualne oprogramowanie
dokument specyfikacji RFC dla HTTP 1.,0 stwierdził, że celem kodu odpowiedzi 302 Found
było wskazanie, że klient powinien wykonać tymczasowe przekierowanie. Jednak wiele nowszych przeglądarek przetwarza kod302
otrzymany za pośrednictwem żądaniaPOST
jako błędne żądanieGET
, co powodowało problemy i zamieszanie w niektórych programach serwerów internetowych próbujących zmusić przeglądarki do wykonania WŁAŚCIWEGO zadania, gdy wymagane było tymczasowe przekierowanie. Aby to rozwiązać, http 1.,1 Dokument specyfikacji RFC dodał 303 See Other
I307 Temporary Redirect
kody odpowiedzi, które są jawnymi sposobami obsługiPOST-to-GET
oraz tymczasowe bezpośrednie odpowiedzi, odpowiednio.
Przeszukaj Logi
prawie każda aplikacja internetowa zachowa jakąś formę dzienników po stronie serwera. Application logs
są zazwyczaj historią tego, co aplikacja zrobiła, na przykład, które strony zostały żądane, z którymi serwerami została podłączona, jakie wyniki bazy danych zapewnia, i tak dalej., Server logs
są związane z faktycznym sprzętem, na którym działa aplikacja, i często dostarczają informacji na temat stanu i stanu wszystkich połączonych usług, a nawet samego serwera. Google „dzienniki”, jeśli używasz CMS lub „dzienniki” i „dzienniki”, jeśli używasz niestandardowej aplikacji, aby uzyskać więcej informacji na temat znajdowania tych dzienników.
Debuguj kod aplikacji
Jeśli Wszystko inne zawiedzie, może się zdarzyć, że problem w jakimś niestandardowym kodzie w Twojej aplikacji powoduje problem., Spróbuj zdiagnozować, skąd może pochodzić problem, ręcznie debugując aplikację, a także analizując Dzienniki aplikacji i serwera. Najlepiej zrobić kopię całej aplikacji na lokalnej maszynie deweloperskiej i wykonać proces debugowania krok po kroku, który pozwoli odtworzyć dokładny scenariusz, w którym wystąpił 302 Found
I wyświetlić kod aplikacji w momencie, gdy coś pójdzie nie tak.,
bez względu na przyczynę, pojawienie się302 Found
w Twojej własnej aplikacji internetowej jest silną wskazówką, że możesz potrzebować narzędzia do zarządzania błędami, które pomoże Ci automatycznie wykryć takie błędy w przyszłości. Najlepsze z tych narzędzi mogą nawet natychmiast powiadomić Ciebie i twój zespół, gdy wystąpi błąd. Oprogramowanie do monitorowania błędów Airbrake zapewnia monitorowanie błędów w czasie rzeczywistym i automatyczne raportowanie wyjątków dla wszystkich projektów deweloperskich., Nowoczesny pulpit nawigacyjny Airbrake zapewnia całodobowe aktualizacje stanu aplikacji i wskaźników błędów. Bez względu na to, nad czym pracujesz, Airbrake łatwo integruje się ze wszystkimi najpopularniejszymi językami i frameworkami. Ponadto Airbrake ułatwia dostosowywanie parametrów WYJĄTKÓW, zapewniając jednocześnie pełną kontrolę nad systemem aktywnego filtrowania błędów, dzięki czemu zbierasz tylko te błędy, które mają największe znaczenie.,
Sprawdź oprogramowanie do monitorowania błędów firmy Airbrake już dziś i przekonaj się, dlaczego tak wiele najlepszych na świecie zespołów inżynierskich wykorzystuje Airbrake, aby zrewolucjonizować swoje praktyki obsługi wyjątków!