Dodatek D.
Kody stanu HTTP
Kody stanu HTTP są pogrupowane w sposób przedstawiony w tabeli D.1.
Tabela D.1.
Grupy kodów stanu HTTP
Zakres kodów |
Znaczenie odpowiedzi |
100-199 |
Informacyjne |
200-299 |
Żądanie klienta pomyślne |
300-399 |
Żądanie klienta przekierowane, konieczne następne działanie |
400-499 |
Żądanie klienta niekompletne |
500-599 |
Błąd serwera |
Tabela D.2 wylicza stałe kodów stanu zdefiniowane w interfejsie HttpServletResponse i wykorzystywane jako parametry metod setStatus() i sendError(). Numer wersji w ostatniej kolumnie odnosi się do wersji protokołu HTTP, która pierwsza zdefiniowała dany kod stanu. Servlet API 2.0 dodał stałe dla kodów stanu HTTP w wersji 1.1, jak opisano w proponowanym standardzie RFC 2068. Servlet API 2.2 dodał kody stanu 416 i 417, jak opisano w próbnym standardzie RFC 2616. Proszę zauważyć, że kody stanu HTTP/1.1 wymagają przeglądarki zgodnej z HTTP/1.1.
Większa ilość informacji na temat HTTP jest dostępna w książce „Web Client Programming” autorstwa Clintona Wonga (O'Reilly). Najnowsza specyfikacja HTTP/1.1 jest dostępna w dokumencie RFC 2616 pod adresem http://www.ietf.org/rfc/rfc2616.txt.
Tabela D.2.
Stałe kodów stanu HTTP
Stała |
Kod |
Domyślna wiadomość |
Znaczenie |
Wersja HTTP |
SC_CONTINUE |
100 |
Continue |
Serwer otrzymał początkową część żądania, klient może kontynuować z dalszymi częściami. |
1.1 |
SC_SWITCHING_PROTOCOLS |
101 |
Switching Protocols |
Serwer chce wypełnić żądanie klienta zmiany protokołu na określony w nagłówku żądania Upgrade. Działanie to może zawierać przełączenie na nowszą wersję HTTP lub własny synchroniczny kanał wideo. |
1.1 |
SC_OK. |
201 |
OK |
Żądanie klienta zakończyło się sukcesem i odpowiedź serwera zawiera żądane dane. Jest to domyślny kod stanu. |
1.0 |
SC_CREATED |
201 |
Created |
Na serwerze został utworzony zasób, przypuszczalnie w odpowiedzi na żądanie klienta. Główna część odpowiedzi powinna zawierać URL (-e), pod którym można ten nowy zasób odnaleźć, z najbardziej specyficznym URL-em zawartym w nagłówku Location. Jeżeli zasób nie może zostać utworzony natychmiast, powinien zamienne zostać zwrócony kod stanu SC_ACCEPTED. |
1.0 |
SC_ACCEPTED |
202 |
Accepted |
Żądanie zostało przyjęte do przetwarzania, ale nie zostało jeszcze ukończone. Serwer powinien opisać aktualny stan żądania w głównej części odpowiedzi. Serwer nie jest zobligowany do działania na ani kończenia wykonywania żądania. |
1.0 |
SC_NON_AUTHORITATIVE_INFORMATION |
203 |
Non-Authoritative Information |
Nagłówki odpowiedzi HTTP nadeszły z lokalnego lub niezależnego źródła, a nie z oryginalnego serwera. Zwykłe serwlety nie mają powodów, by wykorzystywać ten kod stanu |
1.1 |
SC_NO_CONTENT |
204 |
No Content |
Żądanie powiodło się, ale nie istnieje główna część nowej odpowiedzi. Przeglądarki przyjmujące ten kod powinny zachować swój aktualny widok dokumentów. Kod ten jest przydatny serwletowi, kiedy otrzymuje on dane z formularza, ale chce, aby przeglądarka zatrzymała się na formularzu, w ten sposób unikając komunikatu o błędzie „Dokument nie zawiera żadnych danych”. |
1.0 |
SC_RESET_CONTENT |
205 |
Reset Content |
Żądanie powiodło się i przeglądarka powinno wyczyścić (ponownie pobrać) aktualnie przeglądany dokument. Kod ten jest przydatny serwletowi, który pobiera dane z formularza i chce, aby został on wyświetlony w czystej formie. |
1.1 |
SC_PARTIAL_CONTENT |
206 |
Partial Content |
Serwer ukończył częściowe żądanie GET i zwrócił część dokumentu określoną w nagłówku Range klienta. |
1.1 |
SC_MULTIPLE_CHOICES |
300 |
Multiple Choices |
Żądany URL odnosi się do więcej niż jednego zasobu. Na przykład, URL może odnosić się do dokumentu przetłumaczonego na wiele języków. Główna część odpowiedzi powinna wyjaśniać klientowi opcje w formie odpowiedniej do typu zawartości żądania. Serwer może zasugerować wybór przy pomocy nagłówka Location. |
1.1 |
SC_MOVED_PERMANENTLY |
301 |
Moved Permanently |
Żądany zasób został na stałe przeniesiony do nowej lokacji. Przyszłe odwołania powinny wykorzystywać w żądaniach nowy URL. Nowe umiejscowienie jest podane w nagłówku Location. Większość przeglądarek automatycznie przekierowuje do nowej lokacji. |
1.0 |
SC_MOVED_TEMPORARILY |
302 |
Moved Temporarily |
Żądany zasób został czasowo przeniesiony do innej lokacji, ale przyszłe żądania powinny dalej wykorzystywać oryginalny URI w celu uzyskania dostępu do zasobu. Nowe umiejscowienie jest podane w nagłówku Location. Większość przeglądarek automatycznie przekierowuje do nowej lokacji. |
1.0 |
SC_SEE_OTHER |
303 |
See Other |
Żądany zasób przetworzył żądanie, ale klient powinien pobrać swoją odpowiedź poprzez wykonanie GET na URL-u określonym w nagłówku Location. Kod ten jest przydatny serwletowi, który chce otrzymywać dane POST, po czym przekierowywać klienta do innego zasobu w celu wygenerowania odpowiedzi. |
1.1 |
SC_NOT_MODIFIED |
304 |
Not Modified |
Żądany dokument nie został zmieniony od daty wymienionej w nagłówku żądania If-Modified-Since. Zwykłe serwlety nie powinny być zmuszone do korzystania z tego kodu stanu. Zamiast tego implementują one getLastModified(). |
1.0 |
SC_USE_PROXY |
305 |
Use Proxy |
Dostęp do żądanego zasobu musi być uzyskiwany poprzez serwer proxy podany w nagłówku Location. |
1.1 |
SC_BAD_REQUEST |
400 |
Bad Request |
Serwer nie mógł zrozumieć żądania, prawdopodobnie z powodu błędu składni. |
1.0 |
SC_UNAUTHORIZED |
401 |
Unauthorized |
Żądaniu brakuje właściwego uwierzytelnienia. Wykorzystywany w połączeniu z nagłówkami WWW-Authenticate i Authorization. |
1.0 |
SC_PAYMENT_REQUIRED |
402 |
Payment Required |
Zarezerwowany do przyszłego użytku. Istnieją propozycje, by wykorzystywać ten kod w połączeniu z nagłówkiem Charge-To, ale nie stał się on jeszcze standardem w czasie oddawania niniejszej książki do druku. |
1.1 |
SC_FORBIDDEN |
403 |
Forbidden |
Żądanie zostało zrozumiane, ale serwer nie chce go wypełnić. Serwer może wyjaśnić powody swojego oporu w głównej części odpowiedzi. |
1.0 |
SC_NOT_FOUND |
404 |
Not Found |
Żądany zasób nie mógł zostać odnaleziony, lub jest niedostępny. |
1.0 |
SC_METHOD_NOT_ALLOWED |
405 |
Method Not Allowed |
Metoda wykorzystywana przez klienta nie jest obsługiwana w tym URL-u. Metody obsługiwane muszą zostać wymienione w nagłówku odpowiedzi Accept. |
1.1 |
SC_NOT_ACCEPTABLE |
406 |
Not Acceptable |
Żądany zasób istnieje, ale w formacie nie przyjmowanym przez klienta (jak wskazano w nagłówku (ach) żądania Accept. |
1.1 |
SC_PROXY_AUTHENTICATION_REQUIRED |
407 |
Proxy Authentication Required |
Serwer proxy musi dokonać uwierzytelnienia, zanim umożliwi przejście dalej. Wykorzystywany z nagłówkiem Proxy-Authenticate. Zwykłe serwlety nie powinny być zmuszone do korzystania z tego kodu stanu. |
1.1 |
SC_REQUEST_TIMEOUT |
408 |
Request Timeout |
Klient nie dokończył swojego żądania w czasie, w którym serwer był skłonny go słuchać. |
1.1 |
SC_CONFLICT |
409 |
Conflict |
Żądanie nie mogło zostać wypełnione, ponieważ nastąpił konflikt z innym żądaniem lub konfiguracją serwera. Kod ten występuje najczęściej w przypadku żądań HTTP PUT. W których plik jest poddawany kontroli oraz w przypadku konfliktów nowych wersji z poprzednimi. Serwer może wysłać opis konfliktu w głównej części odpowiedzi |
1.0 |
SC_GONE |
410 |
Gone |
Zasób nie jest już dostępny na danym serwerze, a żaden alternatywny adres nie jest znany. Kod ten powinien być wykorzystywany jedynie w przypadku, kiedy zasób został trwale usunięty. Zwykłe serwlety nie powinny być zmuszone do korzystania z tego kodu stanu. |
1.1 |
SC_LENGTH_REQUIRED |
411 |
Length Required |
Serwer nie przyjmie żądania bez nagłówka Content-Length. |
1.1 |
SC_PRECONDITION_FAILED |
412 |
Precondition Failed |
Wynik wstępnego warunku określonego w jednym lub więcej nagłówku If... wynosi false. |
1.1 |
SC_REQUEST_ENTITY_TOO_LARGE |
413 |
Request Entity Too Large |
Serwer nie przetworzy żądania, ponieważ zawartość żądania jest zbyt duża. Jeżeli ograniczenie to jest tymczasowe, serwer może dołączyć nagłówek Retry-After. |
1.1 |
SC_REQUEST_URI_TOO_LONG |
414 |
Request-URI Too Long |
Serwer nie przetworzy żądania, ponieważ URI żądania jest dłuższe, niż może przyjąć. Może to nastąpić, kiedy klient przypadkowo przekonwertował żądanie POST na GET. Zwykłe serwlety nie powinny być zmuszone do korzystania z tego kodu stanu. |
1.1 |
SC_UNSUPPORTED_MEDIA_TYPE |
415 |
Unsupported Media Type |
Serwer nie przetworzy żądania, ponieważ jego główna część posiada format nieobsługiwany przez żądany zasób. |
1.1 |
SC_REQUESTED_RANGE_NOT_SATISFYABLE |
416 |
Requested Range Not Satisfiable |
Zakres zawartości żądanej przez klienta poprzez nagłówek Range koliduje z wielkością żądanego zasobu |
1.1 (RFC 2616) |
SC_EXPECTATION_FAILED |
417 |
Expectation Failed |
Oczekiwanie podane przez klienta poprzez nagłówek Expect nie mogło zostać spełnione. |
1.1 (RFC 2616) |
SC_INTERNAL_SERVER_ERROR |
500 |
Internal Server Error |
Wewnątrz serwera nastąpił niespodziewany błąd, który przeszkodziła w wypełnieniu żądania. |
1.0 |
SC_NOT_IMPLEMENTED |
501 |
Not Implemented |
Serwer nie obsługuje funkcjonalności potrzebnej do wypełnienia żądania. |
1.0 |
SC_BAD_GATEWAY |
502 |
Bad Gateway |
Serwer działający jako brama lub proxy nie otrzymał prawidłowej odpowiedzi od głównego serwera. |
1.0 |
SC_SERVICE_UNAVAILABLE |
503 |
Service Unavailable |
Usługa (serwer) jest tymczasowo niedostępna, ale powinna zostać przywrócona w przyszłości. Jeżeli serwer wie, kiedy będzie ponownie dostępny, może dołączyć nagłówek Retry-After. |
1.0 |
SC_GATEWAY_TIMEOUT |
504 |
Gateway Timeout |
Serwer działający jako brama lub proxy nie otrzymał prawidłowej odpowiedzi od głównego serwera w czasie oczekiwania. |
1.1 |
SC_HTTP_VERSION_NOT_SUPPORTED |
505 |
HTTP Version Not Supported |
Serwer nie obsługuje wersji protokołu HTTP wykorzystanej w żądaniu. Główna część odpowiedzi powinna określać protokoły obsługiwane przez serwer. Zwykłe serwlety nie powinny być zmuszone do korzystania z tego kodu stanu. |
1.1 |
2 Część I ♦ Podstawy obsługi systemu WhizBang (Nagłówek strony)
2 C:\0-praca\Java Servlet - programowanie. Wyd. 2\rD-04.doc