Sprawdź dowolny kod HTTP: co oznacza, kiedy serwery go wysyłają i w której specyfikacji został zdefiniowany. Wyszukuj według numeru lub słowa kluczowego, filtruj według klasy i przechodź bezpośrednio do wybranego kodu.
Wysyłany przed odpowiedzią końcową, aby przeglądarka mogła rozpocząć wstępne pobieranie zasobów wymienionych w nagłówkach Link. Używany przez CDN-y i serwery w celu przyspieszenia wczytywania stron.
Żądanie przyjęto do przetworzenia, ale nie zostało jeszcze zakończone. Używany przez API, które umieszczają zadania w kolejce, na przykład eksporty lub zadania wsadowe.
Żądanie powiodło się i nie ma treści do zwrócenia. Często używany przy żądaniach DELETE oraz przy zapisywaniu danych, gdy klient nie potrzebuje treści odpowiedzi.
Serwer zwraca tylko zakres bajtów wskazany przez klienta. Kod występuje podczas strumieniowania wideo, wznawiania pobierania lub gdy klient wysyła nagłówek Range.
Zasób został trwale przeniesiony pod URL wskazany w nagłówku Location. Przeglądarki i wyszukiwarki aktualizują linki; niektórzy klienci zmieniają metodę POST na GET podczas przekierowania.
Zasób jest tymczasowo dostępny pod innym URL wskazanym w nagłówku Location. Często używany po zalogowaniu i przy krótkotrwałych przekierowaniach; przeglądarki zwykle podążają za nim metodą GET.
Klient powinien pobrać wynik z innego URL za pomocą metody GET. Używany po wysłaniu formularza metodą POST, aby przekierować użytkownika na stronę potwierdzenia (wzorzec Post/Redirect/Get).
Kopia w pamięci podręcznej jest nadal aktualna, więc serwer nie wysyła treści. Kod występuje, gdy przeglądarka ponownie sprawdza aktualność pliku w pamięci podręcznej za pomocą If-None-Match lub If-Modified-Since.
Zasób znajduje się tymczasowo pod innym URL-em, a klient musi ponowić żądanie z tą samą metodą i treścią. Kod ten jest też używany przez przeglądarki przy wewnętrznych przekierowaniach HSTS do HTTPS.
Zasób został przeniesiony na stałe, a klient musi użyć tej samej metody i treści pod nowym URL-em. To stały odpowiednik kodu 307, bezpieczny przy przekierowywaniu żądań POST.
Serwer nie może przetworzyć żądania, ponieważ jest ono nieprawidłowo sformułowane, na przykład zawiera nieprawidłowy JSON, błędny parametr zapytania lub uszkodzone cookie.
Żądanie nie zawiera prawidłowych danych uwierzytelniających. Wbrew nazwie kod oznacza „brak uwierzytelnienia”; serwer wysyła nagłówek WWW-Authenticate z informacją o sposobie logowania.
Serwer zrozumiał żądanie, ale odmawia jego realizacji; ponowne logowanie nie pomoże. Kod pojawia się przy braku uprawnień, wyłączonym wyświetlaniu zawartości katalogu lub blokadzie klienta przez zaporę.
Zasób istnieje, ale nie obsługuje użytej metody HTTP, na przykład POST dla adresu URL służącego tylko do odczytu. Odpowiedź zawiera dozwolone metody w nagłówku Allow.
Podobnie jak w przypadku kodu 401, ale klient musi najpierw uwierzytelnić się w serwerze proxy. Kod pojawia się w sieciach firmowych korzystających z uwierzytelniania przez proxy.
Warunek określony w nagłówkach żądania, na przykład If-Match, nie został spełniony. Kod zapobiega nadpisaniu zasobu, który zmienił się od czasu ostatniego odczytu przez klienta.
Treść żądania jest większa, niż dopuszcza serwer. Kod pojawia się przy przesyłaniu pliku przekraczającego limit, na przykład wartość client_max_body_size w nginx.
URL jest dłuższy, niż serwer może przetworzyć. Zwykle przyczyną jest formularz przesyłający zbyt dużo danych metodą GET albo pętla przekierowań, która stale dodaje parametry.
Żart primaaprilisowy z protokołu Hyper Text Coffee Pot Control Protocol z 1998 roku: czajnik odmawia zaparzenia kawy. HTTP rezerwuje ten kod jako nieużywany, ale niektóre serwery zwracają go jako easter egg lub odrzucają nim niepożądane boty.
Żądanie dotarło do serwera, który nie może wygenerować odpowiedzi dla tego hosta, na przykład gdy połączenie HTTP/2 zostaje ponownie użyte dla innej domeny.
Żądanie jest poprawnie sformułowane, ale jego treść jest nieprawidłowa, na przykład formularz nie spełnia reguł walidacji. API często używają tego kodu przy błędach walidacji.
Klient wysłał zbyt wiele żądań w określonym czasie. API używają tego kodu do ograniczania liczby żądań i często dołączają nagłówek Retry-After z informacją, kiedy spróbować ponownie.
Kod niestandardowy. nginx używa go wewnętrznie do zamknięcia połączenia bez wysyłania odpowiedzi, często w celu odrzucania niepożądanego ruchu; klienci go nie otrzymują.
Zasób jest niedostępny z przyczyn prawnych, na przykład na mocy nakazu sądowego lub z powodu cenzury rządowej. Numer nawiązuje do powieści Fahrenheit 451.
Kod niestandardowy. nginx zapisuje go w logach, gdy klient zamknie połączenie przed odpowiedzią serwera, na przykład gdy użytkownik anuluje wolno ładującą się stronę lub upłynie limit czasu po stronie klienta.
W serwerze wystąpił nieoczekiwany błąd i nie udało się zrealizować żądania. To ogólny błąd spowodowany usterką, awarią lub błędną konfiguracją; szczegóły znajdują się w logach serwera.
Brama lub serwer proxy otrzymał nieprawidłową odpowiedź z serwera nadrzędnego. Częsta przyczyna to awaria lub ponowne uruchamianie aplikacji działającej za nginx albo modułem równoważenia obciążenia.
Serwer tymczasowo nie może obsłużyć żądania, ponieważ jest przeciążony lub trwa konserwacja. Nagłówek Retry-After może wskazywać, kiedy spróbować ponownie.
Brama lub serwer proxy nie otrzymały na czas odpowiedzi z serwera źródłowego. Ten kod pojawia się, gdy żądanie do zaplecza trwa zbyt długo, na przykład z powodu długiego zapytania do bazy danych.
Klient musi się uwierzytelnić, aby uzyskać dostęp do sieci. Kod wysyłają portale przechwytujące w hotelowej, lotniskowej lub kawiarnianej sieci Wi-Fi, zanim się zalogujesz.
Kod niestandardowy. Cloudflare zwraca go, gdy serwer źródłowy odrzucił połączenie, zwykle dlatego, że serwer WWW nie działa lub blokuje adresy IP Cloudflare.
Kod niestandardowy. Cloudflare zwraca go, gdy połączył się z serwerem źródłowym, ale nie otrzymał odpowiedzi HTTP przed upływem limitu czasu (domyślnie 100 sekund).
Kod niestandardowy. Cloudflare zwraca go, gdy certyfikat SSL serwera źródłowego jest nieprawidłowy, a włączony jest tryb Full (strict) SSL.
Zdefiniowano w Cloudflare
Jak używać
Wpisz numer kodu (np. 404 lub samo 5, aby wyświetlić wszystkie błędy serwera) albo słowo kluczowe, takie jak „redirect” lub „timeout”.
Zawęź listę za pomocą filtra klasy: informacyjne, powodzenie, przekierowanie, błąd klienta lub błąd serwera.
Użyj opcji „Kopiuj link” przy dowolnym kodzie, aby udostępnić bezpośredni link, na przykład w zgłoszeniu błędu.
Jak to działa
Każda odpowiedź HTTP zaczyna się od trzycyfrowego kodu statusu. Pierwsza cyfra określa klasę: 1xx — odpowiedzi informacyjne, 2xx — powodzenie, 3xx — przekierowanie, 4xx — błędy spowodowane żądaniem, a 5xx — błędy po stronie serwera. Klienci, którzy nie rozpoznają konkretnego kodu, traktują go jak kod x00 z tej samej klasy, więc nieznany kod 4xx jest obsługiwany jak 400.
Podstawowe kody określa RFC 9110 (HTTP Semantics, 2022), który zastąpił starszy RFC 7231. Pozostałe pochodzą z rozszerzeń: WebDAV (RFC 4918), RFC 6585 dla kodów 428, 429, 431 i 511, RFC 7725 dla 451 oraz RFC 8470 dla 425. RFC 9110 zmienił też nazwy dwóch kodów: 413 to teraz „Content Too Large”, a 422 — „Unprocessable Content”. Nadal można spotkać ich poprzednie nazwy: „Payload Too Large” i „Unprocessable Entity”.
Niektóre kody widoczne w logach nie są standardowe. nginx używa wewnętrznie kodów 444 i 494–499 (499 oznacza, że klient przestał czekać), a Cloudflare zwraca kody 520–526, gdy nie może uzyskać poprawnej odpowiedzi z serwera źródłowego. Na liście oznaczono je jako „Niestandardowe”. Frazy opisujące status (takie jak „Not Found”) są wyświetlane po angielsku, zgodnie z treścią specyfikacji. HTTP/2 i HTTP/3 przesyłają tylko numer.
Przykłady
301 czy 308 przy przenoszeniu witryny
Oba kody oznaczają trwałe przekierowanie. Użyj 301 przy zwykłej zmianie adresu strony. Użyj 308, gdy klient ma ponowić żądanie POST lub PUT pod nowym adresem URL, ponieważ po otrzymaniu 301 niektórzy klienci zmieniają POST na GET.
401 a 403
API zwraca 401, gdy nie przesłano tokenu lub token wygasł — klient powinien wtedy zalogować się ponownie. Kod 403 jest zwracany, gdy token jest prawidłowy, ale użytkownik nie ma uprawnień. Ponowne logowanie nic wtedy nie da.
Diagnozowanie błędu 502 za nginx
Błąd 502 Bad Gateway z nginx oznacza, że aplikacja działająca za nim nie odpowiedziała prawidłowo. Sprawdź, czy proces aplikacji działa i jakie komunikaty zapisuje w logach. Kod 504 oznacza natomiast, że odpowiedź była zbyt wolna.
Często zadawane pytania
Czym różnią się kody 404 i 410?
Kod 404 oznacza, że serwer nie może znaleźć zasobu, ale nie mówi nic o tym, co stanie się z nim w przyszłości. Kod 410 oznacza, że zasób został celowo usunięty i nie wróci. Dzięki temu wyszukiwarki mogą szybciej usunąć adres URL z indeksu.
Czy błąd walidacji powinien zwracać kod 400 czy 422?
Oba są stosowane. Kod 400 pasuje do żądań, których serwer nie może zinterpretować, na przykład z niepoprawnym JSON. Kod 422 pasuje do żądań, które zostały poprawnie zinterpretowane, ale zawierają nieprawidłowe wartości, na przykład adres e-mail bez znaku @.
Czy kod 418 I'm a teapot naprawdę istnieje?
Kod pochodzi z żartobliwego RFC opublikowanego 1 kwietnia 1998 roku. RFC 9110 rezerwuje kod 418 jako nieużywany, aby nie został przypisany do żadnego innego celu. Niektóre serwery zwracają go żartobliwie, ale nie ma on standardowego znaczenia.
Skąd pochodzi kod 499?
Kod 499 jest specyficzny dla nginx. Pojawia się w logach nginx, gdy klient zamknie połączenie, zanim serwer wyśle odpowiedź. Klient nigdy nie otrzymuje kodu 499; zwykle wskazuje on na powolne odpowiedzi lub przekroczenie limitu czasu po stronie klienta.
Czy wyszukiwarki traktują kod 302 tak samo jak 301?
Kod 302 oznacza tymczasowe przeniesienie, dlatego wyszukiwarki zwykle początkowo zachowują w indeksie oryginalny URL. Jeśli przekierowanie 302 utrzymuje się przez długi czas, Google może potraktować je jak przekierowanie trwałe. W przypadku trwałych przeniesień użyj kodu 301 lub 308.
Prywatność
Lista jest częścią strony. Wyszukiwanie i filtrowanie odbywa się w przeglądarce; wyszukiwane hasła nie są nigdzie wysyłane ani uwzględniane w danych analitycznych.