Kody odpowiedzi HTTP
13 minut czytania
W świecie Internetu każde żądanie wysyłane przez przeglądarkę internetową i każda odpowiedź otrzymana od serwera jest opatrzona specyficznym kodem HTTP. Te kody, choć często niedostrzegane przez przeciętnego użytkownika, odgrywają kluczową rolę w diagnozowaniu stanu stron internetowych. Są one niczym sygnalizatory drogowe Internetu informujące nas o różnych sytuacjach – od potwierdzenia pomyślnego załadowania strony po informację o błędach serwera. W tym artykule zagłębimy się w świat kodów odpowiedzi HTTP, aby lepiej zrozumieć, co każdy z nich oznacza i jakie działania mogą być z nimi związane.
Grupy kodów odpowiedzi HTTP
Kody Informacyjne (1xx)
Te kody są jak wstępne sygnały, które informują, że żądanie zostało odebrane przez serwer i jest obecnie przetwarzane. Chociaż nie oznaczają one bezpośrednio sukcesu czy porażki operacji, dają znać, że proces jest w toku.
Kod 100 – Continue
Kod 100 „Continue” jest używany w komunikacji HTTP, aby informować klienta, że jego początkowa część żądania została prawidłowo otrzymana i że powinien kontynuować wysyłanie reszty żądania. Ten kod jest często używany w przypadku wysyłania dużych żądań, aby zapobiec wysyłaniu dużego ciała żądania, jeśli serwer, na podstawie nagłówków żądania, wie, że odrzuci żądanie.
Kod 101 – Switching Protocols
Kod 101 „Switching Protocols” jest wysyłany przez serwer, aby zasygnalizować, że zgodził się przełączyć protokoły komunikacyjne na te, które zostały zaproponowane przez klienta w jego żądaniu. Jest to używane, na przykład, podczas uaktualniania połączenia z HTTP do WebSocket.
Kod 110 – Connection Timed Out
Kod 110 „Connection Timed Out” nie jest standardowym kodem odpowiedzi HTTP zdefiniowanym przez RFC, ale może być używany przez niektóre implementacje serwerów do wskazania, że żądanie nie zostało zakończone, ponieważ serwer zbyt długo nie odpowiada. Oznacza to, że połączenie z serwerem zostało przerwane z powodu przekroczenia czasu oczekiwania.
Kod 111 – Connection Refused
Kod 111 „Connection Refused” nie jest standardowym kodem odpowiedzi w specyfikacji HTTP. Może być jednak używany przez niektóre serwery lub aplikacje sieciowe do wskazania, że próba nawiązania połączenia z serwerem została odrzucona. Może to być spowodowane różnymi czynnikami, takimi jak problemy z siecią, serwer nieaktywny lub odrzucenie połączenia z powodu konfiguracji zabezpieczeń.
Kody Powodzenia (2xx)
Jest to grupa kodów, której otrzymanie jest najbardziej pożądane. Sygnalizują one, że żądanie zostało nie tylko odebrane i zrozumiane, ale także pomyślnie przetworzone. Kod 200 OK jest tu najbardziej znanym przykładem, symbolizującym udane przetworzenie żądania.
Kod 200 – OK
Kod 200 „OK” jest standardową odpowiedzią HTTP, oznaczającą, że żądanie zostało pomyślnie przetworzone. Serwer zwraca zawartość żądanego dokumentu, co jest potwierdzeniem udanego wykonania zapytania. Jest to najczęściej spotykany kod odpowiedzi, sygnalizujący sukces operacji.
Kod 201 – Created
Kod 201 „Created” jest używany, gdy serwer pomyślnie utworzył nowy zasób jako wynik żądania, na przykład po zrealizowaniu pomyślnego żądania POST. Odpowiedź zazwyczaj zawiera szczegóły dotyczące nowo utworzonego zasobu, w tym jego lokalizację.
Kod 202 – Accepted
Kod 202 „Accepted” oznacza, że zapytanie zostało przyjęte do przetworzenia, ale jego realizacja jeszcze się nie zakończyła. Jest to sygnał, że zapytanie jest poprawne, ale może wymagać więcej czasu na przetworzenie.
Kod 203 – Non-Authoritative Information
Kod 203 „Non-Authoritative Information” jest stosowany, gdy serwer zwraca informację, która została utworzona z lokalnych bądź zewnętrznych kopii, a więc nie jest bezpośrednio pochodząca od pierwotnego źródła. Jest to przydatne, gdy serwer działa jako pośrednik i nie ma bezpośredniego dostępu do oryginalnego zasobu.
Kod 204 – No Content
Kod 204 „No Content” jest używany, gdy serwer pomyślnie przetworzył żądanie, ale nie ma treści do zwrócenia. Jest to często stosowane w odpowiedzi na żądania typu PUT lub DELETE, gdzie klient nie oczekuje zwróconych danych.
Kod 205 – Reset Content
Kod 205 „Reset Content” informuje, że serwer zrealizował żądanie i klient powinien przywrócić pierwotny wygląd dokumentu. Jest to używane, na przykład, po wysłaniu formularza, aby wskazać, że klient powinien zresetować jego zawartość.
Kod 206 – Partial Content
Kod 206 „Partial Content” wskazuje, że serwer zrealizował tylko część żądania typu GET dotyczącego określonego zakresu danych. Jest to szczególnie przydatne podczas strumieniowego przesyłania dużych plików, pozwalając na pobieranie ich fragmentami. Odpowiedź zawiera nagłówek 'Content-Range’, który określa zakres bajtów zwróconego fragmentu zasobu.
Kody Przekierowań (3xx)
Kody te wskazują na konieczność podjęcia dodatkowych kroków przez klienta w celu zakończenia żądania. Mogą one informować o stałych zmianach adresów URL (jak w przypadku kodu 301 Moved Permanently) lub tymczasowych przekierowaniach.
Kod 300 – Multiple Choices
Kod 300 „Multiple Choices” informuje, że dla danego żądania istnieje więcej niż jedna możliwość obsługi. Serwer może dostarczyć listę zasobów lub różnych opcji, z których klient może wybrać. Jest to używane, gdy istnieje kilka alternatywnych sposobów obsłużenia żądania, na przykład różne formaty pliku do pobrania.
Kod 301 – Moved Permanently
Kod 301 „Moved Permanently” oznacza, że żądany zasób został trwale przeniesiony na inny adres URL. Jest to sygnał dla klienta, aby aktualizował swoje łącza i używał nowego adresu URL w przyszłych żądaniach. Jest to ważne dla utrzymania ciągłości i optymalizacji SEO.
Kod 302 – Found
Kod 302 „Found” sygnalizuje, że żądany zasób jest dostępny tymczasowo pod innym adresem URL. Jest to często używane w procesach przekierowywania, na przykład podczas logowania, ale oczekuje się, że w przyszłości zasób wróci pod pierwotny adres.
Kod 303 – See Other
Kod 303 „See Other” informuje, że odpowiedź na żądanie znajduje się pod innym URI, i klient powinien przekierować swoje zapytanie tam. Jest to szczególnie przydatne w odpowiedzi na żądania POST, gdzie przekierowanie pozwala uniknąć ponownego przesłania danych formularza.
Kod 304 – Not Modified
Kod 304 „Not Modified” jest używany, gdy zawartość zasobu nie zmieniła się od ostatniego żądania klienta. Pozwala to klientowi na korzystanie z danych zapisanych w pamięci podręcznej, zamiast ponownie pobierać zasób, co zmniejsza obciążenie sieci i serwera.
Kod 305 – Use Proxy
Kod 305 „Use Proxy” wskazuje, że żądany zasób musi być dostępny przez serwer proxy. Adres proxy jest podawany w nagłówku odpowiedzi. Jest to sytuacja, w której klient musi dokonać dodatkowych kroków, aby uzyskać dostęp do zasobu.
Kod 306 – Switch Proxy
Kod 306 „Switch Proxy” jest kodem zarezerwowanym i obecnie nie jest używany. Był stosowany w starszych wersjach protokołu i oznaczał, że przyszłe żądania powinny używać innego serwera proxy.
Kod 307 – Temporary Redirect
Kod 307 „Temporary Redirect” podobnie jak kod 302, wskazuje na tymczasowe przekierowanie żądanego zasobu na inny adres URI. Różnica polega na tym, że metoda żądania (np. GET, POST) powinna pozostać niezmieniona w przekierowaniu.
Kod 310 – Too Many Redirects
Kod 310 „Too Many Redirects” jest sygnałem, że w trakcie próby dostępu do zasobu wystąpiło zbyt wiele przekierowań, co może wskazywać na problem z pętlą przekierowań lub błędną konfigurację serwera.
Kody Błędów Klienta (4xx)
Te kody odpowiedzi są wyświetlane, gdy problem występuje po stronie klienta. Przykładowo, kod 404 Not Found jest dobrze znanym sygnałem, że żądany zasób nie został znaleziony. Inne kody, takie jak 403 Forbidden lub 401 Unauthorized, odnoszą się do kwestii autoryzacji i dostępu.

Kod 400 – Bad Request
Kod 400 „Bad Request” oznacza, że zapytanie od klienta nie mogło być przetworzone przez serwer z powodu nieprawidłowości, takich jak błąd w składni. Jest to sygnał, że klient powinien sprawdzić i poprawić zapytanie przed ponownym wysłaniem.
Kod 401 – Unauthorized
Kod 401 „Unauthorized” wskazuje na brak autoryzacji do dostępu do żądanego zasobu. Zwykle wymaga podania poprawnych danych uwierzytelniających, takich jak login i hasło, aby uzyskać dostęp.
Kod 402 – Payment Required
Kod 402 „Payment Required” jest obecnie zarezerwowany na przyszłe użycie. Może być wykorzystany w sytuacjach, gdzie dostęp do zasobu wymaga opłaty.
Kod 403 – Forbidden
Kod 403 „Forbidden” informuje, że serwer zrozumiał żądanie, ale odmawia dostępu do zasobu. Jest to często używane, gdy użytkownik nie posiada odpowiednich uprawnień.
Kod 404 – Not Found
Kod 404 „Not Found” jest jednym z najbardziej znanych kodów, wskazującym, że serwer nie może znaleźć żądanego zasobu. Oznacza to, że URL, do którego klient próbuje uzyskać dostęp, nie istnieje na serwerze.
Kod 405 – Method Not Allowed
Kod 405 „Method Not Allowed” oznacza, że metoda żądania (np. GET, POST) jest niedozwolona dla danego zasobu. Serwer zwykle dostarcza listę dozwolonych metod.
Kod 406 – Not Acceptable
Kod 406 „Not Acceptable” jest używany, gdy serwer nie jest w stanie dostarczyć zasobu zgodnego z akceptowalnymi formatami danych określonymi w nagłówkach żądania.
Kod 407 – Proxy Authentication Required
Kod 407 „Proxy Authentication Required” podobny jest do kodu 401, ale dotyczy uwierzytelnienia przy użyciu serwera proxy. Klient musi najpierw uwierzytelnić się u proxy.
Kod 408 – Request Timeout
Kod 408 „Request Timeout” oznacza, że serwer przekroczył czas oczekiwania na żądanie od klienta. Występuje, gdy klient nie przesyła żądania w ustalonym czasie.
Kod 409 – Conflict
Kod 409 „Conflict” sygnalizuje, że żądanie koliduje z aktualnym stanem zasobu. Może to być używane, na przykład, gdy występuje konflikt wersji w systemie kontroli wersji.
Kod 410 – Gone
Kod 410 „Gone” wskazuje, że zasób nie jest już dostępny na serwerze i nie ma znanego przekierowania. Jest to bardziej definitywne niż kod 404.
Kod 411 – Length Required
Kod 411 „Length Required” oznacza, że serwer odrzuca żądanie, ponieważ nie zawiera ono wymaganego nagłówka 'Content-Length’.
Kod 412 – Precondition Failed
Kod 412 „Precondition Failed” jest używany, gdy serwer nie może spełnić jednego lub więcej warunków określonych w nagłówkach żądania.
Kod 413 – Request Entity Too Large
Kod 413 „Request Entity Too Large” wskazuje, że rozmiar żądania przesłanego przez klienta przekracza limit przyjęty przez serwer.
Kod 414 – Request-URI Too Long
Kod 414 „Request-URI Too Long” sygnalizuje, że adres URL zawarty w żądaniu jest zbyt długi dla serwera do przetworzenia.
Kod 415 – Unsupported Media Type
Kod 415 „Unsupported Media Type” wskazuje, że serwer nie obsługuje formatu mediów zawartego w żądaniu.
Kod 416 – Requested Range Not Satisfiable
Kod 416 „Requested Range Not Satisfiable” jest używany, gdy klient żąda fragmentu zasobu, który nie istnieje lub jest poza zakresem zasobu.
Kod 417 – Expectation Failed
Kod 417 „Expectation Failed” wskazuje, że serwer nie może spełnić oczekiwań określonych w nagłówku 'Expect’ żądania.
Kod 418 – I’m a teapot
Kod 418 „I’m a teapot” jest żartobliwym kodem zdefiniowanym jako część „Hyper Text Coffee Pot Control Protocol”. Oznacza, że serwer jest czajnikiem i nie może zaparzyć kawy.
Kod 421 – Misdirected Request
Kod 421 „Misdirected Request” wskazuje, że żądanie zostało skierowane do serwera, który nie jest w stanie go obsłużyć lub odpowiedzieć.
Kod 422 – Unprocessable Entity
Kod 422 „Unprocessable Entity” używany jest, gdy żądanie jest poprawnie sformułowane, ale z powodu błędów semantycznych nie może być przetworzone.
Kod 423 – Locked
Kod 423 „Locked” wskazuje, że żądany zasób jest zablokowany i nie może być modyfikowany.
Kod 424 – Failed Dependency
Kod 424 „Failed Dependency” oznacza, że żądanie nie powiodło się z powodu niepowodzenia innego żądania, od którego było zależne.
Kod 425 – Too Early
Kod 425 „Too Early” wskazuje, że serwer nie chce ryzykować przetwarzania żądania, które może zostać powtórzone, co mogłoby prowadzić do ataku typu „replay”.
Kod 426 – Upgrade Required
Kod 426 „Upgrade Required” informuje, że serwer odmawia wykonania żądania przy użyciu obecnego protokołu i proponuje klientowi przejście na inny protokół.
Kod 428 – Precondition Required
Kod 428 „Precondition Required” wskazuje, że serwer wymaga określonych warunków wstępnych w żądaniu, które nie zostały spełnione.
Kod 429 – Too Many Requests
Kod 429 „Too Many Requests” sygnalizuje, że użytkownik wysłał zbyt wiele żądań w krótkim czasie, co jest często stosowane w celu kontroli nadmiernego obciążenia serwera.
Kod 431 – Request Header Fields Too Large
Kod 431 „Request Header Fields Too Large” wskazuje, że jedno lub więcej pól nagłówka żądania jest zbyt duże, co uniemożliwia przetworzenie żądania przez serwer.
Kod 451 – Unavailable For Legal Reasons
Kod 451 „Unavailable For Legal Reasons” jest używany, gdy zasób został zablokowany z powodów prawnych, na przykład z powodu ocenzurowania zawartości przez władze. Jest to nawiązanie do powieści „451 stopni Fahrenheita”.
Kody Błędów Serwera (5xx)
W tej kategorii znajdują się kody informujące o problemach po stronie serwera. Przykładowo, kod 500 Internal Server Error wskazuje na nieoczekiwany problem serwera uniemożliwiający przetworzenie żądania.
Kod 500 – Internal Server Error
Kod 500 „Internal Server Error” jest ogólnym komunikatem błędu wskazującym na to, że serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania. Jest to sygnał, że problem wystąpił po stronie serwera, a nie użytkownika.
Kod 501 – Not Implemented
Kod 501 „Not Implemented” wskazuje, że serwer nie dysponuje funkcjonalnością wymaganą do obsługi żądania. Jest to zwykle odpowiedź na nieznany typ żądania lub funkcję, którą serwer nie jest w stanie zrealizować.
Kod 502 – Bad Gateway
Kod 502 „Bad Gateway” sygnalizuje, że serwer działający jako brama lub pośrednik otrzymał niepoprawną odpowiedź od serwera nadrzędnego. Oznacza to, że pierwotne żądanie zostało przetworzone, ale przekierowanie nie powiodło się.
Kod 503 – Service Unavailable
Kod 503 „Service Unavailable” jest używany, gdy serwer jest tymczasowo niedostępny, zazwyczaj z powodu przeciążenia lub konserwacji. Nie wskazuje to na stały problem i serwis powinien zostać przywrócony po pewnym czasie.
Kod 504 – Gateway Timeout
Kod 504 „Gateway Timeout” wskazuje, że serwer działający jako brama lub pośrednik nie otrzymał w odpowiednim czasie odpowiedzi od serwera nadrzędnego, co uniemożliwiło zakończenie żądania.
Kod 505 – HTTP Version Not Supported
Kod 505 „HTTP Version Not Supported” sygnalizuje, że serwer nie obsługuje wersji protokołu HTTP użytej w żądaniu. Wskazuje to na konieczność aktualizacji klienta lub serwera.
Kod 506 – Variant Also Negotiates
Kod 506 „Variant Also Negotiates” jest technicznym kodem używanym w sytuacji, gdy dana transakcja nie może zostać zrealizowana z powodu cyklicznych odniesień.
Kod 507 – Insufficient Storage
Kod 507 „Insufficient Storage” sygnalizuje, że serwer nie jest w stanie zapisać danych związanych z wykonaniem żądania, zazwyczaj z powodu braku miejsca na dysku.
Kod 508 – Loop Detected
Kod 508 „Loop Detected” wskazuje, że serwer wykrył nieskończoną pętlę podczas przetwarzania żądania, co uniemożliwia jego zakończenie.
Kod 509 – Bandwidth Limit Exceeded
Kod 509 „Bandwidth Limit Exceeded” jest używany, gdy serwer przekroczył ustalony limit przepustowości, co skutkuje tymczasowym zawieszeniem serwisu.
Kod 510 – Not Extended
Kod 510 „Not Extended” wskazuje na brak rozszerzenia HTTP koniecznego do obsługi żądania, co oznacza, że klient powinien rozszerzyć swoje żądanie o dodatkowe dane.
Kod 511 – Network Authentication Required
Kod 511 „Network Authentication Required” wskazuje, że dostęp do sieci wymaga uwierzytelnienia. Jest to często stosowane w sieciach wymagających potwierdzenia zasad użytkowania przed umożliwieniem dostępu do Internetu.
Rola kodów odpowiedzi HTTP w diagnostyce internetowej
Kody odpowiedzi HTTP są niezwykle ważne w komunikacji internetowej, oferując jasne i znormalizowane informacje o wyniku każdego żądania wysyłanego do serwera. Od kodów sukcesu (2xx), przez informacyjne (1xx), przekierowania (3xx), błędy klienta (4xx), aż po błędy serwera (5xx), każdy kod dostarcza szczegółowych informacji o stanie żądania i odpowiedzi. Ich zrozumienie ułatwia zarządzanie stronami internetowymi, aplikacjami i infrastrukturą sieciową, umożliwiając szybką diagnozę i rozwiązanie napotkanych problemów.




