Statusy odpowiedzi HTTP

Statusy odpowiedzi HTTP

Ogólne

Loading

Statusy odpowiedzi HTTP to nic innego jak informacja wysłana nam przez serwer HTTP do aplikacji klienta. Kody odpowiedzi protokołu HTTP dzielimy na kilka kategorii. Kody informacyjne 1XX, kody powodzenia 2XX, kody przekierowań 3XX, kody błędu aplikacji klienta 4XX, oraz kody błędu serwera HTTP – 5XX.

Kody informacyjne

100 Continue Kontynuuj – prośba o dalsze wysyłanie zapytania
101 Switching Protocols Zmiana protokołu
110 Connection Timed Out Przekroczono czas połączenia. Serwer zbyt długo nie odpowiada.
111 Connection refused Serwer odrzucił połączenie

Kody powodzenia

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

Kody przekierowań

300 Multiple Choices Wiele 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
301 Moved Permanently Trwale przeniesiony – żądany zasób zmienił swój url i w przyszłości zasób powinien być szukany pod wskazanym nowym adresem
302 Found Znaleziono – żądany zasób jest chwilowo dostępny pod innym adresem a przyszłe odwołania do zasobu powinny być kierowane pod adres pierwotny
303 See Other Zobacz 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.
304 Not Modified Nie zmieniono – zawartość zasobu nie podległa zmianie według warunku przekazanego przez klienta (np. data ostatniej wersji zasobu pobranej przez klienta – pamięć podręczna przeglądarki)
305 Use Proxy Użyj serwera proxy – do żądanego zasobu trzeba odwołać się przez serwer proxy podany w nagłówku Location odpowiedzi
306 Switch Proxy Kod nieużywany, aczkolwiek zastrzeżony dla starszych wersji protokołu
307 Temporary Redirect Tymczasowe 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ść
310 Too many redirects Zbyt wiele przekierowań.

Kody błędu aplikacji klienta

400 Bad Request Nieprawidłowe zapytanie – żądanie nie może być obsłużone przez serwer z powodu nieprawidłowości postrzeganej jako błąd użytkownika (np. błędna składnia zapytania)
401 Unauthorized Nieautoryzowany dostęp – żądanie zasobu, który wymaga uwierzytelniania.
402 Payment Required Wymagana opłata – odpowiedź zarezerwowana na przyszłość. Google Developers API korzysta z tego kodu, jeśli dany programista przekroczył dzienny limit zapytań.
403 Forbidden Zabroniony – serwer zrozumiał zapytanie, lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób
404 Not Found Nie znaleziono – serwer nie odnalazł zasobu według podanego URL ani niczego co by wskazywało na istnienie takiego zasobu w przeszłości
405 Method Not Allowed Niedozwolona metoda – metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu, odpowiedź zawiera też listę dozwolonych metod
406 Not Acceptable Niedozwolone – 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
407 Proxy Authentication Required Wymagane uwierzytelnianie do serwera pośredniczącego (ang. proxy) – analogicznie do kodu 401, dotyczy dostępu do serwera proxy
408 Request Timeout Koniec czasu oczekiwania na żądanie – klient nie przesłał zapytania do serwera w określonym czasie
409 Conflict Konflikt – żą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 znaleźć przyczyny błędu i przesłać ponownie prawidłowe zapytanie. Odpowiedź serwera powinna zawierać informację umożliwiające klientowi rozwiązanie problemu, jednak nie jest to obowiązkowe (np. przesłanie 2 razy identycznego dokumentu kiedy wymagana jest unikalność).
410 Gone Zniknął (usunięto) – zażądany zasób nie jest dłużej dostępny i nieznany jest jego ewentualny nowy adres URI; klient powinien już więcej nie odwoływać się do tego zasobu
411 Length required Wymagana 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
412 Precondition Failed Warunek wstępny nie może być spełniony – serwer nie może spełnić przynajmniej jednego z warunków zawartych w zapytaniu
413 Request Entity Too Large Encja zapytania zbyt długa – całkowita długość zapytania jest zbyt długa dla serwera
414 Request-URI Too Long Adres URI zapytania zbyt długi – długość zażądanego URI jest większa niż maksymalna oczekiwana przez serwer
415 Unsupported Media Type Nieznany sposób żądania – serwer odmawia przyjęcia zapytania, ponieważ jego składnia jest niezrozumiała dla serwera
416 Requested Range Not Satisfiable Zakres bajtowy podany w zapytaniu nie do obsłużenia – klient podał w zapytaniu zakres, który nie może być zastosowany do wskazanego zasobu
417 Expectation Failed Oczekiwana 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
418 I’m a teapot „Jestem czajnikiem” – tzw. easter egg. Zdefiniowany w 1998. Obecnie nie jest implementowany do serwerów HTTP, ale znane są takie przypadki
422 Unprocessable entity Zapytanie było poprawnie sformułowane, ale było niemożliwe do kontynuowania z powodu semantycznych błędów.
429 Too Many Requests Użytkownik wysłał za wiele żądań w danym czasie.
451 Unavailable For Legal Reasons Zawartość niedostępna z powodów prawnych – strona lub zasób zostały zablokowane z powodów naruszenia prawa, w tym także z powodu ocenzurowania zawartości przez władze. Wartość kodu jest nawiązaniem do powieści „451 stopni Fahrenheita”.

Kody błędu serwera HTTP

500 Internal Server Error Wewnętrzny błąd serwera – serwer napotkał niespodziewane trudności, które uniemożliwiły zrealizowanie żądania
501 Not Implemented Nie zaimplementowano – serwer nie dysponuje funkcjonalnością wymaganą w zapytaniu; ten kod jest zwracany, gdy serwer otrzymał nieznany typ zapytania
502 Bad Gateway Błą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
503 Service Unavailable Usługa niedostępna – serwer nie jest w stanie w danej chwili zrealizować zapytania klienta ze względu na przeciążenie
504 Gateway Timeout Przekroczony 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
505 HTTP Version Not Supported Nieobsługiwana wersja HTTP – serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji HTTP
506 Variant Also Negotiates Wariant również negocjuje (w wolnym tłumaczeniu)
507 Insufficient Storage (WebDAV) Serwer nie jest w stanie zapisać danych związanych z wykonaniem zapytania
508 Loop Detected (WebDAV) Serwer wykrył nieskończoną pętlę w trakcie przetwarzania zapytania
509 Bandwidth Limit Exceeded Serwer jest tymczasowo niedostępny, ponieważ właściciel strony przekroczył limit transferu danych.
510 Not Extended Brak rozszerzenia HTTP koniecznego do obsługi danego zapytania
511 Network Authentication Required Wymagane uwierzytelnianie przed otrzymaniem dostępu do sieci. W zamyśle wykorzystywane przez pośredników kontrolujących dostęp do sieci (np.: wymaganie potwierdzenia zasad użytkowania przed udostępnieniem połączenia).

Podsumowanie.

Statusy odpowiedzi HTTP to jedna z pierwszych lekcji o wiedzy ogólnej. Informacje tutaj zawarte mogą dać pewien wkład początkującym testerom, czy odświeżyć informacje, które gdzieś mogły umknąć. O innych zagadnieniach ogólnych piszemy w niniejszym dziale.
Treść statusów odpowiedzi pochodzi z wikipedii.