Kody statusu HTTP to standardowe kody używane przez serwery internetowe do informowania klienta (np. przeglądarki) o wynikach jego żądań. Kody te są zdefiniowane w specyfikacjach HTTP i służą do określania stanu żądanego zasobu oraz przekazywania informacji o działaniach, które należy podjąć, aby zrealizować żądanie.
Historia i cel
Kody statusu HTTP zostały wprowadzone do specyfikacji HTTP, aby zapewnić ustandaryzowany sposób komunikacji między serwerami internetowymi a klientami. Kody te pomagają automatyzować obsługę błędów, kierować dalszymi działaniami klienta i dostarczać informacje diagnostyczne. Rozróżniają żądania udane i nieudane, przekierowania oraz wskazują konkretne problemy.
Struktura i zakresy kodów statusu
Kody statusu HTTP są liczbami trzycyfrowymi. Pierwsza cyfra określa klasę statusu, wskazując ogólny typ odpowiedzi. Istnieje pięć klas statusów:
- 1xx: Odpowiedzi informacyjne
- Kody te wskazują, że żądanie zostało odebrane, a proces jest kontynuowany.
- 2xx: Pomyślne odpowiedzi
- Kody te wskazują, że żądanie zostało pomyślnie odebrane, zrozumiane i zaakceptowane.
- 3xx: Przekierowanie
- Kody te wskazują, że klient musi podjąć dalsze działania, aby zrealizować żądanie.
- 4xx: Błędy klienta
- Kody te wskazują błędy spowodowane nieprawidłowymi żądaniami klienta.
- 5xx: Błędy serwera
- Kody te wskazują błędy spowodowane awariami po stronie serwera.
Szczegółowy opis kodów statusu
1xx: Odpowiedzi informacyjne
- 100 Continue: Serwer otrzymał początkową część żądania, a klient powinien je kontynuować.
- 101 Switching Protocols: Serwer zgadza się na zmianę protokołów zgodnie z żądaniem klienta.
- 102 Processing: Serwer zaakceptował żądanie, ale przetwarzanie nie zostało ukończone.
2xx: Pomyślne odpowiedzi
- 200 OK: Żądanie zostało pomyślnie przetworzone, a serwer zwrócił żądany zasób.
- 201 Created: Żądanie zostało pomyślnie zrealizowane i utworzono nowy zasób.
- 202 Accepted: Żądanie zostało zaakceptowane do przetworzenia, ale przetwarzanie nie zostało ukończone.
- 203 Non-Authoritative Information: Żądanie zostało pomyślnie przetworzone, ale informacje pochodzą z innego źródła.
- 204 No Content: Żądanie zostało pomyślnie przetworzone, ale odpowiedź nie zawiera treści do wysłania.
- 205 Reset Content: Żądanie zostało pomyślnie przetworzone, a klient powinien zresetować widok.
- 206 Partial Content: Serwer zwraca część treści w odpowiedzi na żądanie zakresu.
3xx: Przekierowanie
- 300 Multiple Choices: Żądanie może zostać zrealizowane na kilka sposobów.
- 301 Moved Permanently: Żądany zasób został trwale przeniesiony pod nowy adres URL.
- 302 Found: Żądany zasób jest tymczasowo dostępny pod innym adresem URL.
- 303 See Other: Zasób należy pobrać za pomocą żądania GET pod innym adresem URL.
- 304 Not Modified: Żądany zasób nie został zmodyfikowany od czasu ostatniego żądania.
- 305 Use Proxy: Dostęp do żądanego zasobu musi odbywać się przez serwer proxy.
- 307 Temporary Redirect: Żądany zasób jest tymczasowo dostępny pod innym adresem URL.
- 308 Permanent Redirect: Żądany zasób został trwale przeniesiony pod nowy adres URL.
4xx: Błędy klienta
- 400 Bad Request: Serwer nie może przetworzyć żądania z powodu błędu klienta.
- 401 Unauthorized: Aby uzyskać dostęp do zasobu, wymagane jest uwierzytelnienie.
- 402 Payment Required: Kod jest zarezerwowany do przyszłego użycia.
- 403 Forbidden: Serwer odmawia realizacji żądania.
- 404 Not Found: Nie można odnaleźć żądanego zasobu.
- 405 Method Not Allowed: Metoda żądania nie jest dozwolona dla żądanego zasobu.
- 406 Not Acceptable: Żądany zasób nie może zostać dostarczony w akceptowalnym formacie.
- 407 Proxy Authentication Required: Wymagane jest uwierzytelnienie serwera proxy.
- 408 Request Timeout: Upłynął limit czasu żądania.
- 409 Conflict: Żądanie nie może zostać przetworzone z powodu konfliktu z bieżącym stanem zasobu.
- 410 Gone: Żądany zasób nie jest już dostępny i nie będzie dostępny ponownie.
- 411 Length Required: Żądanie musi określać długość treści.
- 412 Precondition Failed: Warunek wstępny w nagłówkach żądania jest fałszywy.
- 413 Payload Too Large: Encja żądania jest większa, niż serwer chce lub może przetworzyć.
- 414 URI Too Long: Identyfikator URI żądania jest zbyt długi.
- 415 Unsupported Media Type: Encja żądania ma typ nośnika, którego serwer lub zasób nie obsługuje.
- 416 Range Not Satisfiable: Klient zażądał części pliku, ale serwer nie może dostarczyć tej części.
- 417 Expectation Failed: Serwer nie może spełnić wymagań pola nagłówka żądania Expect.
- 418 I’m a teapot: Żartobliwy kod wprowadzony w RFC 2324.
5xx: Błędy serwera
- 500 Internal Server Error: Ogólny komunikat o błędzie, gdy serwer napotka nieoczekiwany stan.
- 501 Not Implemented: Serwer nie obsługuje funkcjonalności wymaganej do realizacji żądania.
- 502 Bad Gateway: Serwer otrzymał nieprawidłową odpowiedź od serwera nadrzędnego.
- 503 Service Unavailable: Serwer jest obecnie niedostępny.
- 504 Gateway Timeout: Serwer nie otrzymał odpowiedzi w odpowiednim czasie od serwera nadrzędnego.
- 505 HTTP Version Not Supported: Wersja HTTP użyta w żądaniu nie jest obsługiwana przez serwer.
- 506 Variant Also Negotiates: Przezroczysta negocjacja treści dla żądania prowadzi do odwołania cyklicznego.
- 507 Insufficient Storage: Serwer nie może przechować reprezentacji potrzebnej do realizacji żądania.
- 508 Loop Detected: Serwer wykrył nieskończoną pętlę podczas przetwarzania żądania.
- 510 Not Extended: Aby serwer mógł zrealizować żądanie, wymagane są dalsze rozszerzenia żądania.
- 511 Network Authentication Required: Aby uzyskać dostęp do sieci, wymagane jest uwierzytelnienie.
Podsumowanie
Kody statusu HTTP odgrywają kluczową rolę w działaniu aplikacji i usług internetowych. Zapewniają ustandaryzowaną komunikację między serwerami a klientami, pomagając zarządzać przepływem danych i obsługiwać błędy. Zrozumienie tych kodów jest niezbędne dla programistów i administratorów, ponieważ umożliwia skuteczne rozwiązywanie problemów oraz optymalizację zasobów internetowych.
