Przejdź do treści

Kody stanu HTTP

Odpowiedź HTTP zaczyna się od trzycyfrowego kodu i krótkiej frazy przyczyny. Pierwsza cyfra to całe podsumowanie: 1xx jest tymczasowe, 2xx powiodło się, 3xx wskazuje gdzieś indziej, 4xx obwinia żądanie, 5xx obwinia serwer. Jeśli pamiętasz tylko to, możesz przeczytać dziennik, który nigdy wcześniej nie widziałeś.

Frazy przyczyn tutaj są tymi z RFC, w angielskim, ponieważ to właśnie podróżuje na przewodzie — serwer wysyła "Not Found", nie tłumaczenie tego, i frazę, którą grepujesz w dzienniku, musi pasować do bajtów, które faktycznie zostały wysłane.

Rozróżnienia, które powodują rzeczywiste problemy, znajdują się wewnątrz klas, a nie między nimi: 401 versus 403, 301 versus 308, i 502 versus 503 każdy odpowiada na inne pytanie o to, co zrobić dalej, i każdy jest rutynowo używany dla drugiego.

1xx — Informacyjny

3

Tymczasowy: odpowiedź nie jest ostateczna i następna.

KodFraza przyczynyCo to oznacza
100ContinueNagłówki odbierane, kontynuuj wysyłanie treści.
101Switching ProtocolsPrzełączanie protokołów — uścisk dłoni WebSocket.
103Early HintsWczesne wskazówki: preload te zasoby, podczas gdy rzeczywista odpowiedź jest przygotowywana.

2xx — Sukces

5

Żądanie zostało otrzymane, rozumiane i zaakceptowane.

KodFraza przyczynyCo to oznacza
200OKSukces, z treścią.
201CreatedUtworzony.Powinien nosić nagłówek Location wskazujący nowy zasób.
202AcceptedZaakceptowane do przetwarzania, które jeszcze nie nastąpiło.
204No ContentSukces i celowo bez treści.Prawidłowa odpowiedź na DELETE, lub zapis bez niczego do zwrócenia.
206Partial ContentZawartość częściowa — odpowiedź na żądanie Range. Wznowitalnych pobierań.

3xx — Przekierowanie

6

Zasób jest gdzieś indziej, lub twoją kopię buforowaną jest wciąż dobra.

KodFraza przyczynyCo to oznacza
301Moved PermanentlyPrzeniesiony na stałe. Zaktualizuj swoje łącza; bufory mogą to przechowywać na zawsze.
302FoundZnaleziono — tymczasowe przekierowanie.Szeroko wdrażane jako przełączenie metody na GET, które 307 naprawia.
303See OtherPatrz inne: pobierz wynik za pomocą GET. Przekierowanie po formularzu POST.
304Not ModifiedNie zmodyfikowany — twoja kopia buforowana jest bieżąca. Wysyłane bez treści.
307Temporary RedirectTymczasowe przekierowanie, metoda i treść zachowywane.
308Permanent RedirectTrwałe przekierowanie, metoda i treść zachowywane.

4xx — Błąd klienta

14

Żądanie to problem. Powtórzenie go bez zmian będzie działać ponownie.

KodFraza przyczynyCo to oznacza
400Bad RequestSerwer nie mógł przeanalizować żądania w ogóle.
401UnauthorizedNie uwierzytelniony — serwer nie wie, kim jesteś.Nazwany Unauthorized, ale oznacza nieuwierzytelnionym. Powinien zawierać WWW-Authenticate.
403ForbiddenUwierzytelniony i wciąż niedozwolony. Lepsze poświadczenia nie będą pomocne.
404Not FoundBrak takiego zasobu, i serwer nie powie, czy kiedykolwiek był.
405Method Not AllowedZła metoda dla tego adresu URL.Musi wymienić te, które działają w nagłówku Allow.
406Not AcceptableNic dostępnego w formacie twojej nagłówka Accept.
409ConflictKonflikty z bieżącym stanem — edycja względem starszej wersji.
410GonePoszło: istniało i zostało celowo usunięte. Silniejsze niż 404.
413Content Too LargeTreść jest większa niż serwer akceptuje.
415Unsupported Media TypeSerwer nie obsługuje tego Content-Type.
418I'm a teapotJestem czajnikiem. Żart z kwietnia 1998 r., na stałe zarezerwowany.
422Unprocessable ContentPrzeanalizowane prawidłowo, zawartość nieprawidłowa — brakujące pole, zła wartość.
429Too Many RequestsOgraniczone stawkami.Szukaj Retry-After przed ponowieniem próby i wycofaj się wykładniczo.
451Unavailable For Legal ReasonsZablokowany z powodów prawnych. Liczba to aluzja do Fahrenheit 451.

5xx — Błąd serwera

6

Żądanie może być w porządku. To są te warte ponowienia.

KodFraza przyczynyCo to oznacza
500Internal Server ErrorNieobsłużony błąd na serwerze. Nic do naprawy po twojej stronie.
501Not ImplementedSerwer w ogóle nie implementuje tej metody.
502Bad GatewayProxy dotarł do serwera upstream i wrócił z czymś do kłopotów.
503Service UnavailableCelowo nie obsługuje — przeciążony lub w konserwacji.Stan, który powinien nosić Retry-After.
504Gateway TimeoutProxy zrezygnował z czekania na serwer upstream.
505HTTP Version Not SupportedWersja HTTP w żądaniu nie jest obsługiwana.

Częste pytania

Jaka jest różnica między 401 a 403?
401 Unauthorized oznacza, że żądanie nie zostało uwierzytelnione — serwer nie wie, kim jesteś, i prawidłowe 401 zawiera nagłówek WWW-Authenticate mówiący ci, jak to udowodnić. 403 Forbidden oznacza, że wie dokładnie, kim jesteś i nadal możesz nie mieć tego. Ponowienie próby 403 z lepszymi poświadczeniami dla tej samej tożsamości nie pomoże.
Czy powinienem użyć 301 czy 308 dla przekierowania?
308 jeśli metoda ma znaczenie. Historycznie 301 i 302 były szeroko wdrażane jako "przekieruj i przełącz na GET", co po cichu zamienia POST na GET. 307 i 308 zostały wprowadzone, aby obiecać, że metoda i treść są zachowywane. Dla trwałego przeniesienia strony, która jest tylko kiedykolwiek pobierana, 301 pozostaje najlepiej rozumianym wyborem.
Co oznacza 422, że 400 nie?
400 Bad Request oznacza, że serwer nie mógł w ogóle zrozumieć żądania — zniekształcony JSON, uszkodzony nagłówek. 422 Unprocessable Content oznacza, że przeanalizował się dobrze i zawartość jest tak czy inaczej zła: dobrze sformułowana treść z brakującym wymaganym polem lub datą w przeszłości. Podział jest użyteczny dokładnie dlatego, że naprawa klienta jest inna w każdym przypadku.
Czy 418 to rzeczywisty kod stanu?
Jest rzeczywisty w tym, że jest zarejestrowany i każda biblioteka HTTP go zna, i żart w tym, że pochodzi z 1998 roku Hyper Text Coffee Pot Control Protocol kwietnia błahy. Próby odzyskania numeru do praktycznego użytku zostały odrzucone, więc jest na stałe zarezerwowany dla czajników.
Dlaczego 503 jest inny od 502?
502 Bad Gateway oznacza, że proxy dotarł do serwera upstream i wrócił z czymś do kłopotów. 503 Service Unavailable oznacza, że sam serwer celowo nie obsługuje w tej chwili — przeciążony lub w konserwacji — i to ten, który powinien nosić nagłówek Retry-After, ponieważ to ten, który ma się spodziewać powrotu.