Online world concept

Klasy kodów odpowiedzi serwera HTTP

Kody odpowiedzi serwera HTTP to nic innego jak informacja wysłana przez serwer do klienta (przeważnie przeglądarki), informująca o sposobie w jaki realizowane jest zapytanie klienta. Jednak co oznaczają poszczególne odpowiedzi? Co się kryje pod poszczególnymi liczbami?

Otwierasz ulubioną przeglądarkę i wpisujesz adres www strony, którą chcesz przejrzeć. Zamiast najnowszych plotek z życia gwiazd wita nagle groźny komunikat 404!

Rodzaje kodów odpowiedzi serwera HTTP

Komunikaty wyświetlane przez strony zostały bardzo jasno rozróżnione dzięki kodom. Widząc początek trzycyfrowego kodu możemy mieć pierwszą wskazówkę gdzie coś poszło nie tak.

Kody odpowiedzi serwera HTTP dzielą się na:

  • 1xx – kody informacyjne
  • 2xx – kody powodzenia
  • 3xx – kody przekierowania
  • 4xx – kody błędu aplikacji klienta
  • 5xx – kody błędu serwera

Kody informacyjne

Kody zaczynające się od 1xx to kody informacyjne.

KodOpis koduZnaczenie
100Continue prośba o dalsze wysyłanie zapytania
101Switching Protocolszmiana protokołu
110Connection Timed Outprzekroczony maksymalny czas połączenia
111 Connection Refused połączenie odrzucone przez serwer

Z tego zestawu najczęściej zdaża mi się widzieć kod 110.

Kody powodzenia

Kody zaczynające się od 2xx to kody powodzenia. Nie miałam jeszcze okazji widzieć takich, albo nie zwróciłam na nie uwagi.

KodOpis koduZnaczenie
200OKzawartość żądanego dokumentu (najczęściej zwracany nagłówek odpowiedzi w komunikacji www)
201Createdutworzono – wysłany dokument został zapisany na serwerze
202Acceptedprzyjęto – zapytanie zostało przyjęte do obsłużenia, lecz jego zrealizowanie jeszcze się nie skończyło
203Non Authoritative Informationinformacja nieautorytatywna – zwrócona informacja nie odpowiada dokładnie odpowiedzi pierwotnego serwera, lecz została utworzona z lokalnych bądź zewnętrznych kopii
204No Contentbrak zawartości – serwer zrealizował zapytanie klienta i nie potrzebuje zwracać żadnej treści
205Reset Contentprzywróć zawartość – serwer zrealizował zapytanie i klient powinien przywrócić pierwotny wygląd dokumentu
206Partial Contentczęść zawartości – serwer zrealizował tylko część zapytania typu GET, odpowiedź musi zawierać nagłówek Range informujący o zakresie bajtowym zwróconego elementu

Kody przekierowania

Kody zaczynające się od 3xx należą do grupy odpowiedzi o przekierowaniu.

KodOpis koduZnaczenie
300Multiple Choiceswiele możliwości – istnieje więcej niż jeden sposób obsłużenia danego zapytania, serwer może podać adres zasobu, który pozwala na wybór jednoznacznego zapytania spośród możliwych
301Moved Permanentlytrwale przeniesiony – żądany zasób zmienił swój URI i w przyszłości zasób powinien być szukany pod wskazanym nowym adresem
302Foundznaleziono – żądany zasób jest chwilowo dostępny pod innym adresem a przyszłe odwołania do zasobu powinny być kierowane pod adres pierwotny
303See Otherzobacz inne – odpowiedź na żądanie znajduje się pod innym URI i tam klient powinien się skierować. To jest właściwy sposób przekierowywania w odpowiedzi na żądanie metodą POST
304Not Modifiednie zmieniono – zawartość zasobu nie podległa zmianie według warunku przekazanego przez klienta (np. data ostatniej wersji zasobu pobranej przez klienta – cache przeglądarki)
305Use Proxyużyj serwera proxy – do żądanego zasobu trzeba odwołać się przez serwer proxy podany w nagłówku Location odpowiedzi
306Switch Proxykod nieużywany, aczkolwiek zastrzeżony dla starszych wersji protokołu
307Temporary Redirecttymczasowe przekierowanie – żądany zasób znajduje się chwilowo pod innym adresem URI, odpowiedź powinna zawierać zmieniony adres zasobu, na który klient zobowiązany jest się przenieść
310Too many redirectszbyt wiele przekierowań

Kody błędu aplikacji klienta

Wszystkie kody zaczynające się na 4xx to kody błędu aplikacji klienta. Jest tego zdecydowanie najwięcej.

KodOpis koduZnaczenie
400Bad Requestnieprawidłowe zapytanie – żądanie nie może być obsłużone przez serwer z powodu błędnej składni zapytania
401Unauthorizednieautoryzowany dostęp – żądanie zasobu, który wymaga uwierzytelnienia
402Payment Requiredwymagana opłata – odpowiedź zarezerwowana na przyszłość (niektóre serwisy już z niego korzystają)
403Forbittenzabroniony – serwer zrozumiał zapytanie lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób
404Not Foundnie znaleziono – serwer nie odnalazł zasobu według podanego URL ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości
405Method Not Allowedniedozwolona metoda – metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu, odpowiedź zawiera też listę dozwolonych metod
406Not Acceptableniedozwolone – zażądany zasób nie jest w stanie zwrócić odpowiedzi mogącej być obsłużonej przez klienta według informacji podanych w zapytaniu
407Proxy Authentication Requiredwymagane uwierzytelnienie do serwera pośredniczącego (ang. proxy) – analogicznie do kodu 401, dotyczy dostępu do serwera proxy
408Request Timeoutkoniec czasu oczekiwania na żądanie – klient nie przesłał zapytania do serwera w określonym czasie
409 Conflictkonflikt – żądanie nie może być zrealizowane, ponieważ występuje konflikt z obecnym statusem zasobu, ten kod odpowiedzi jest zwracany tylko w przypadku podejrzewania przez serwer, że klient może nie znaleźć przyczyny błędu i przesłać prawidłowego zapytania
410Gonezniknął (usunięto) – zażądany zasób nie jest dłużej dostępny i nie znany jest jego ewentualny nowy adres URI; klient powinien już więcej nie odwoływać się do tego zasobu
411Length requiredwymagana długość – serwer odmawia zrealizowania zapytania ze względu na brak nagłówka Content-Length w zapytaniu; klient może powtórzyć zapytanie dodając doń poprawny nagłówek długości
412Precondition Failedwarunek wstępny nie może być spełniony – serwer nie może spełnić przynajmniej jednego z warunków zawartych w zapytaniu
413Request Entity Too Largeencja zapytania zbyt długa – całkowita długość zapytania jest zbyt długa dla serwera
414Request-URI Too Longadres URI zapytania zbyt długi – długość zażądanego URI jest większa niż maksymalna oczekiwana przez serwer
415Unsupported Media Typenieznany sposób żądania – serwer odmawia przyjęcia zapytania, ponieważ jego składnia jest niezrozumiała dla serwera
416Requested Range Not Satisfiablezakres bajtowy podany w zapytaniu nie do obsłużenia – klient podał w zapytaniu zakres, który nie może być zastosowany do wskazanego zasobu
417Expectation Failedoczekiwana wartość nie do zwrócenia – oczekiwanie podane w nagłówku Expect żądania nie może być spełnione przez serwer lub – jeśli zapytanie realizuje serwer proxy – serwer ma dowód, że oczekiwanie nie będzie spełnione przez następny w łańcuchu serwer realizujący zapytanie

Kody błędu serwera

Kody 5xx są informacją ze strony serwera, że coś jest nie tak po jego stronie.

KodOpis koduZnaczenie
500Internal Server Errorwewnętrzny błąd serwera – serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania
501Not Implementednie zaimplementowano – serwer nie dysponuje funkcjonalnością wymaganą w zapytaniu; ten kod jest zwracany, gdy serwer otrzymał nieznany typ zapytania
502Bad Gatewaybłąd bramy – serwer – spełniający rolę bramy lub pośrednika – otrzymał niepoprawną odpowiedź od serwera nadrzędnego i nie jest w stanie zrealizować żądania klienta
503Service Unavailableusługa niedostępna – serwer nie jest w stanie w danej chwili zrealizować zapytania klienta ze względu na przeciążenie
504Gateway Timeoutprzekroczony czas bramy – serwer – spełniający rolę bramy lub pośrednika – nie otrzymał w ustalonym czasie odpowiedzi od wskazanego serwera HTTP, FTP, LDAP itp. lub serwer DNS jest potrzebny do obsłużenia zapytania
505HTTP Version Not Supportedwersja HTTP nie obsługiwana – serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji HTTP

Podsumowanie

Z przeważającą większością tych kodów nigdy się nie zetkniemy. Do tej pory przykładałam też małą wagę do tego jaki błąd pojawia się na ekranie. Może to jednak pomóc ustalić gdzie leży problem i dalej drążyć temat lub wskazać go deweloperom do poprawy. Najważniejsze to znać hasłowo jakiego typu jest to komunikat, w której grupie się znajduje i o czym informuje. Nie zaszkodzi mieć kilka ulubionych… może 404?

Więcej wiedzy na stronie Google – Standard Error Responses

Leave a comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *