Każdy kod statusu HTTP: co oznacza, kiedy go wysyłać i z którego RFC pochodzi
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane.Kod statusu HTTP mówi w 3 cyfrach, co się stało. 404 oznacza, że zasobu nigdy tam nie było, 410, że był i zniknął na dobre, a 301 przenosi go na stałe. Każdy kod jest tu opisany wraz z tym, kiedy go wysyłać, i RFC, które go definiuje.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wpisz w pole wyszukiwania numer, nazwę lub to, co chcesz przekazać, na przykład „rate limit”.
Zawęź listę Kody przyciskami w sekcji Pokaż: Częste, Wszystkie lub jedna klasa od 1xx do 5xx.
Wybierz kod, aby przeczytać jego znaczenie, zastosowanie, informację o cache i RFC, które go definiuje.
Wybierz język w polu „Wyślij ten kod w” i kliknij Kopiuj fragment, aby pobrać kod, który go zwraca.
Ten przewodnik po kodach statusu HTTP wymienia każdy zarejestrowany kod od 100 do 511 oraz niezarejestrowane kody zwracane przez nginx, Apache, Laravel i Cloudflare. Każdy wpis mówi, co kod naprawdę oznacza, kiedy go wysyłać, czy pamięć podręczna może zapisać odpowiedź bez nagłówków cache, czy przekierowanie zmienia metodę żądania i które RFC go definiuje.
Wyszukiwanie działa na trzy sposoby. Wpisz numer, na przykład 404, albo klasę, na przykład 4xx, aby przejść prosto do niej. Wpisz nazwę, na przykład „not found”. Albo opisz, co chcesz wyrazić, a wyszukiwanie po intencji znajdzie kod: „login failed” daje 401, „rate limit” daje 429, „file too large” daje 413, „validation failed” daje 422.
Uwzględniono dwa szczegóły, które większość list opisuje źle. Zapisywanie w cache to nie tylko tak lub nie: sekcja 15.1 RFC 9110 wymienia dwanaście kodów, które pamięć podręczna może zapisać bez żadnych jawnych nagłówków, dlatego przypadkowe 404 może się utrzymać. Przekierowania też się różnią: 301 i 302 pozwalają klientowi zmienić POST na GET, 303 robi to zawsze, a 307 i 308 muszą dokładnie powtórzyć metodę i treść.
Każdy częsty kod ma fragment do skopiowania dla surowego HTTP, Express, Fastify, FastAPI, Go i PHP, wraz z nagłówkiem, którego ten kod wymaga, na przykład WWW-Authenticate przy 401 lub Allow przy 405. Nic nie jest nigdzie wysyłane; cała tabela jest na stronie.
Użyj 401 Unauthorized. Oznacza on, że serwer nie wie, kim jesteś, więc brakujące, wygasłe lub błędne dane logowania należą właśnie tu. 403 Forbidden stosuje się tylko wtedy, gdy wiadomo, kto wywołuje, a mimo to dostęp jest odmówiony. Specyfikacja wymaga nagłówka WWW-Authenticate przy każdym 401.
401 oznacza brak uwierzytelnienia: należy wysłać dane logowania i spróbować ponownie. 403 oznacza uwierzytelnienie bez uprawnień: lepsze dane logowania nie pomogą. Jeśli samo ujawnienie, że rekord istnieje, byłoby wyciekiem, niektóre API odpowiadają 404 zamiast 403, aby atakujący niczego się nie dowiedział.
Sekcja 15.1 RFC 9110 wymienia 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414 i 501 jako heurystycznie zapisywalne, a RFC 7725 dodaje 451. Pamięć podręczna może je zapisać bez nagłówka Cache-Control czy Expires, dlatego tymczasowe 404 może się utrzymywać. Wszystkie pozostałe kody wymagają jawnych nagłówków cache.
Specyfikacja na to nie pozwala, ale niemal każda przeglądarka robi dokładnie to przy 301 i 302. Kod 303 zawsze zmienia kolejne żądanie na GET. Jeśli metoda i treść muszą przetrwać przekierowanie, należy użyć 307 dla przeniesienia tymczasowego lub 308 dla stałego.
418 I'm a Teapot pochodzi z RFC 2324, primaaprilisowego żartu z 1998 roku o protokole dla ekspresu do kawy. Propozycja z 2017 roku, by ponownie wykorzystać ten numer, została wycofana po sprzeciwach, więc pozostaje zarezerwowany w rejestrze IANA i nigdy nie może mieć prawdziwego znaczenia.
Nie. 499 to kod nginx widoczny tylko w logach, oznaczający klienta, który się rozłączył, a 520–527 to kody Cloudflare dla problemów między brzegiem sieci a serwerem źródłowym. Żaden nie jest zarejestrowany w IANA. Są tu wymienione, bo można je spotkać w logach, każdy z oznaczeniem produktu, który go wymyślił.
Nadal coś nie działa? Zapytaj o narzędzie Kody statusu HTTP a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.