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 odpowiedzi 404 Nie znaleziono

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.

Oceń wpis!

Kliknij na gwiazdkę, aby ocenić!

Średnia ocena 5 / 5. Liczba głosów: 5

Jak dotąd brak głosów! Bądź pierwszy i oceń ten wpis.

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *