Stavové kódy HTTP

Stavový kód HTTP je súčasť hlavičky odpovede servera na klientskú požiadavku. Stavový kód upresňuje, ako bola odpoveď serverom spracovaná – či bola požiadavka vybavená kladne, záporne, alebo došlo k chybe. Ďalej je na klientovi, aby kód stavu odpovede interpretoval a následne podnikol patričné ​​kroky.

Súčasťou hlavičky odpovede spolu so stavovým kódom je tiež stavové hlásenie, čo je anglický slovný popis stavového kódu. Stavové kódy, sú rozdelené podľa charakteru odpovede do piatich kategórií – informačné, úspech, presmerovanie, chybná požiadavka (chyba klienta) a chyba servera.

Stavový kód je trojica dekadických čísel, kde prvé číslo určuje kategóriu odpovede a zvyšné čísla ju bližšie špecifikujú.

Oficiálny zoznam stavových kódov HTTP spravuje organizácia Internet Assigned Numbers Authority IANA.

Webový server IIS od firmy Microsoft niekedy pridáva k samotnému stavovému kódu ešte dodatočné číslice, aby mohol klientovi poskytnúť špecifickejšie informácie o vzniknutej udalosti.

1xx Informačné 
 100 Continue (RFC 7231)
 Hovorí, že server dostal hlavičku požiadavky a čaká na klienta, aby odoslal telo správy (napr. POST dáta).

 101 Switching protocol (RFC 7231)
 Je odoslaná ako potvrdenie, keď klient požiada server o zmenu komunikačného protokolu.

 102 Processing (WebDAV) (RFC 2518)
 Požiadavka WebDAV môže obsahovať množstvo podpožiadaviek, ktoré môžu spôsobiť dlhšie vykonávanie požiadavky. Kód hovorí, že požiadavka bola prijatá na spracovanie, ale odpoveď ešte nie je dostupná. Predíde sa tak tomu, aby klient začal považovať kvôli oneskoreniu požiadavky za stratenú a zbytočne ju opakoval.

2xx Úspešné 
 200 OK (RFC 7231)
 Štandardná odpoveď pre úspešnú HTTP požiadavku. Odpoveď bude závisieť od použitej metódy. V prípade použitia metódy GET bude odpoveď obsahovať entitu zodpovedajúcu požadovanému zdroju. V prípade POST metódy bude obsahovať entitu opisujúcu alebo obsahujúcu výsledok akcie.

 201 Created (RFC 7231)
 Výsledkom odpovede je vytvorenie nového zdroja identifikovateľného podľa URI.

 202 Accepted (RFC 7231)
 Požiadavka bola prijatá na spracovanie, ale ešte nebola dokončená.

 203 Non-Authoritative Information (od HTTP / 1.1) (RFC 7231)
 Server spracoval požiadavku kladne, ale návratová informácia pochádza z iného zdroja.

 204 No Content (RFC 7231)
 Server úspešne spracoval požiadavku, ale nevracia žiadny obsah.

 205 Reset Content (RFC 7231)
 Server úspešne spracoval požiadavku, ale nevracia žiadnu odpoveď a hovorí klientovi, že smie obnoviť pôvodný obsah dokumentu.

 206 Partial Content (RFC 7233)
 Server doručil iba časť zdroja a to vďaka hlavičke range, ktorú klient odoslal. Hlavičku range používajú nástroje ako wget pre opätovné spojenie prerušených sťahovaní alebo rozdelenie sťahovaní do viacerých prúdov.

 207 Multi-Status (WebDAV) (RFC 4918)
 V tele odpovede je XML dokument obsahujúci viac oddelených kódov odpovedí, ktoré závisia na podpožiadavkách.

3xx Presmerovanie 
 300 Multiple Choices(RFC 7231)
 Hovorí, že požadovaný dokument je dostupný na viacerých miestach, a požaduje, aby ho klient špecifikoval v nasledujúcej požiadavke.

 301 Moved Permanently (RFC 7231)
 Tento a všetky budúce požiadavky by mali byť smerované na dané URI. Odporúča sa pri presmerovaniach, ktoré sú definitívne.

 302 Found (RFC 7231)
 Najviac používaný pre presmerovanie. Moderné prehliadače implementujú kód 302 funkcionalitou 303. Kód 302 je tiež dočasným presmerovaním stránky, používa sa pri zmenách na webovej stránke alebo obsahu, ktorý je momentálne nedostupný a bude dostupným v budúcnosti.

 303 See Other (RFC 7231)
 Odpoveď na požiadavku môže byť nájdená na inom URI pomocou metódy GET.

 304 Not Modified (RFC 7232)
 Indikuje, že od poslednej požiadavky sa zdrojový dokument nezmenil. Odpoveď s týmto kódom nesmie obsahovať telo.

 305 Use Proxy (RFC 7231)
 Ide o bezpečnostný mechanizmus. Server prostredníctvom kódu 305 klientovi hovorí, že požiadavku musí odoslať znova pomocou proxy serveru uvedeného v URL.

 306 Switch Proxy (RFC 7231)
 Je rezervovaný, ale nepoužíva sa.

 307 Temporary Redirect (RFC 7231)
 Stránka bola dočasne presunutá na iné miesto.

 308 Permanent Redirect (RFC 7538)
 Stránka bola permanentne presunutá na iné miesto.

4xx Chyba klienta 
 400 Bad Request (RFC 7231)
 Požiadavka nemôže byť vykonaná, pretože bola syntakticky nesprávne zapísaná.

 401 Unauthorized (RFC 7235)
 Používaný tam, kde je vyžadovaná autorizácia, ale zatiaľ nebola vykonaná.

 402 Payment Required (RFC 7231)
 Rezervovaný pre budúce účely.

 403 Forbidden (RFC 7231)
 Požiadavka bola legálna, ale server odmietol odpovedať. Na rozdiel od 401 Unauthorized response tu autorizácia nehrá žiadnu úlohu.

 404 Not Found (RFC 7231)
 Požadovaný dokument nebol nájdený, ale v budúcnosti môže byť dostupný.

 405 Method Not Allowed (RFC 7231)
 Požiadavka bola zavolaná na zdroj metódou, ktorú nepodporuje. Napríklad ide o formulár, ktorý odosiela dáta metódou POST, ale niekto sa ho namiesto toho pokúsi odoslať metódou GET.

 406 Not Acceptable (RFC 7231)
 Server dokáže generovať iba odpoveď, ktorá nie je klientom podporovaná.

 407 Proxy Authentication Required (RFC 7235)
 Pred vykonaním požiadavky je nutné, aby bola táto požiadavka autentizovaná proxy serverom.

 408 Request Timeout (RFC 7231)
 Vypršal čas vyhradený na spracovanie požiadavky.

 409 Conflict (RFC 7231)
 Indikuje, že požiadavka nemôže byť spracovaná vzhľadom na vzniku konfliktu.

 410 Gone (RFC 7231)
 Hovorí, že daná stránka už nie je naďalej dostupná.

 411 Length Required (RFC 7231)
 Klient v požiadavke nešpecifikuje vyžadovanú dĺžku obsahu – nie je definovaná hlavička Content-Length.

 412 Precondition Failed (RFC 7232)
 Prednastavená podmienka v požiadavke bola serverom vyhodnotená ako chybná.

 413 Request Entity Too Large (RFC 7231)
 Server neakceptoval požiadavku, pretože požadované množstvo je príliš veľké.

 414 Request-URI Too Long (RFC 7231)
 URI požiadavka je príliš dlhá.

 415 Unsupported Media Type (RFC 7231)
 Požiadavka obsahuje serverom nepodporovaný typ média, a preto nebola vykonaná.

 416 Requested Range Not Satisfiable (RFC 7233)
 Klient žiada časť súboru, ale server nemôže túto časť zaistiť. Môže sa objaviť, ak je v požiadavke vyplnená hlavička Range s rozsahom nevyhovujúcim súboru.

 417 Expectation Failed (RFC 7231)
 Server nemôže dosiahnuť predpoklad v hlavičke Expect.

 418 Im a teapot (kanvica na čaj) (RFC 2324)
 Definovaný v roku 1998 ako Aprílový žartík.

 422 Unprocessable Entity (WebDAV) (RFC 4918)
 Požiadavka je syntakticky správna, ale kvôli sémantickým chybám ju nie je možné splniť.

 423 Locked (WebDAV) (RFC 4918)
 Požadovaný zdroj je uzamknutý.

 424 Failed Dependency (WebDAV) (RFC 4918)
 Táto požiadavka skončila neúspechom, vzhľadom na neúspešnú predchádzajúcu požiadavku.

 425 Unordered Collection (RFC 3648)

 426 Upgrade Required (RFC 7231)
 Klient by mal použiť iný protokol ako TLS/1.0.

 428 Precondition Required (RFC 6585)
 Klient nesplnil nejaku podmienku, napr. zdroj/obsah na serveri bol aktualizovaný iným klientom.

 429 Too Many Requests (RFC 6585)
 Klient odoslal nadlimitný počet požiadaviek môže opäť skusiť až Retry-After čase.

 431 Request Header Fields Too Large (RFC 6585)
 Klient odoslal príliš veľkú hlavičku požiadavky.

 449 Retry With
 Rozšírenie protokolu od spoločnosti Microsoft. Po vykonaní patričnej akcie, môže byť požiadavka opakovaná.

 450 Blocked by Windows Parental Controls
 Ďalšie rozšírenie protokolu od spoločnosti Microsoft. Táto chyba je vrátená, keď je spustený nástroj Windows Parental Controls a je zablokovaný prístup k určitej stránke.

 451 Unavailable For Legal Reasons (RFC7725)
 Nedostupné z právnych dôvodov. Číslo kódu bolo zvolené ako referencia na knihu 451 stupňov Fahrenheita.

5xx Chyba servera 
Server nedokázal spracovať validnú požiadavku. Stavové kódy začínajúce číslicou "5" indikujú prípady, keď server zaznamenal chybu, alebo nie je schopný spracovať požiadavku. Pri odpovedi na požiadavku HEAD by server mal priložiť upresnenie chyby a či je tento stav prechodný alebo trvalý. Následne by mala byť táto informácia zobrazená používateľovi, jeho prehliadačom.

 500 Internal Server Error (RFC 7231)
 Všeobecné chybové hlásenie. Pri spracovávaní požiadavky došlo k bližšie nešpecifikovanej chybe.

 501 Not Implemented (RFC 7231)
 Nebola rozpoznaná metóda požiadavky, alebo server túto metódu neovláda.

 502 Bad Gateway (RFC 7231)
 Túto správu zasiela proxy server klientovi, keď od servera dostal chybovú správu.

 503 Service Unavailable (RFC 7231)
 Služba je dočasne nedostupná. Môže byť spôsobená preťažením serveru alebo z dôvodu údržby.

 504 Gateway Timeout (RFC 7231)
 Túto správu zasiela proxy server klientovi v prípade, že nedostal od cieľového servera odpoveď v danom čase (dostal od neho 408: Request Timeout).

 505 HTTP Version Not Supported (RFC 7231)
 Server nepodporuje verziu protokolu HTTP použitú v žiadosti.

 506 Variant Also Negotiates (RFC 2295)

 507 Insufficient Storage (WebDAV) (RFC 4918)

 509 Bandwidth Limit Exceeded (Apache bw/limited extension)
 Nie je špecifikovaný v RFC.

 510 Not Extended (RFC 2774)
 Na spracovanie požiadavky sú potrebné ďalšie rozšírenia.

 511 Network Authentication Required (RFC 6585)
 Odpoveď kedy je nutné vykonať autentifikáciu pristupu k sieti. Napr: Pristup na "free wifi"

Neoficiálne kódy

nginx 
 499 Client Closed Request
 Rozšírenie od Nginx. Kód je určený pre zaznamenávanie v prípade, že klient ukončil spojenie počas spracovávania požiadavky serverom.

Referencie

Pozri aj 
 Hypertext Transfer Protocol

Externé odkazy 
 Http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html (po anglicky)

HTTP