Stavové kódy HTTP

Stavový kód HTTP je součást hlavičky odpovědi serveru na klientský požadavek. Stavový kód upřesňuje, jak byla odpověď serverem zpracována - jestli byl požadavek vyřízen kladně, záporně, nebo došlo k chybě. Dále je na klientovi, aby stavový kód odpovědi interpretoval a následně podnikl patřičné kroky.

Součástí hlavičky odpovědi spolu se stavovým kódem je také stavové hlášení, což je anglický slovní popis stavového kódu. Jsou rozděleny podle charakteru odpovědi do pěti kategorií - informační, úspěch, přesměrování, chybný požadavek (chyba klienta) a chyba serveru.

Stavový kód je trojice dekadických čísel, kde první číslo určuje kategorii odpovědi a ostatní čísla jí blíže specifikují.

Oficiální seznam stavových kódů protokolu HTTP spravuje organizace Internet Assigned Numbers Authority IANA.[1]

Webový server IIS od firmy Microsoft někdy přidává k samotnému stavovému kódu ještě dodatečné číslice, aby mohl klientovi poskytnout specifičtější informaci o nastalé události.[2]

1xx Informační

100 Continue
Říká, že server obdržel hlavičky požadavku a čeká na klienta, aby odeslal tělo zprávy (např. POST data).
101 Switching protocol
Je odeslána jako potvrzení, když klient zažádá server o změnu komunikačního protokolu.
102 Processing (WebDAV) (RFC 2518)
Požadavek WebDAV může obsahovat množství podpožadavků, které mohou způsobit delší vykonávání požadavku. Kód říká, že požadavek byl přijat ke zpracování, ale odpověď ještě není dostupná. Předejde se tak tomu, aby klient začal považovat kvůli prodlevě požadavek za ztracený a zbytečně ho opakoval.

2xx Success

200 OK
Standardní odpověď pro úspěšný HTTP požadavek. Odpověď bude záviset na použité metodě. V případě použití metody GET bude odpověď obsahovat entitu odpovídající požadovanému zdroji. V případě POST metody bude obsahovat entitu popisující nebo obsahující výsledek akce.
201 Created
Výsledkem odpovědi je vytvoření nového zdroje identifikovatelného dle URI.
202 Accepted
Požadavek byl přijat ke zpracování, ale nebyl ještě dokončen.
203 Non-Authoritative Information (od HTTP/1.1)
Server kladně zpracoval požadavek, ale návratová informace pochází z jiného zdroje.
204 No Content
Server úspěšně zpracoval požadavek, ale nevrací žádný obsah.
205 Reset Content
Server úspěšně zpracoval požadavek, ale nevrací žádnou odpověď a říká klientovi, že smí obnovit původní obsah dokumentu.
206 Partial Content
Server doručuje pouze část zdroje a to díky hlavičce range, kterou klient odeslal. Hlavičku range používají nástroje jako wget k znovunavázání přerušených stahování nebo rozdělení stahování do více proudů.
207 Multi-Status (WebDAV) (RFC 4918)
V těle odpovědi je XML dokument obsahující více oddělených kódů odpovědí, které závisejí na podpožadavcích.

3xx Redirect

300 Multiple Choices
Říká, že požadovaný dokument je dostupný na více místech, a požaduje jej po klientovi specifikovat v následujícím požadavku.
301 Moved Permanently
Tento a všechny budoucí požadavky by měly být směrovány na dané URI.
302 Found
Původně navržen pro dočasné přesměrování (byl nahrazen 303 a 307 z důvodu špatné interpretace standardu HTTP/1.0 (RFC 1945) v praxi).
Nejvíce používaný pro přesměrování. Moderní prohlížeče implementují kód 302 funkcionalitou 303.
303 See Other (since HTTP/1.1)
Odpověď na požadavek může být nalezena na jiném URI pomocí metody GET.
304 Not Modified
Indikuje, že od posledního požadavku se zdrojový dokument nezměnil. Odpověď s tímto kódem nesmí obsahovat tělo.
305 Use Proxy (since HTTP/1.1)
Jedná se o bezpečností mechanismus. Server prostřednictvím kódu 305 klientovi říká, že požadavek musí odeslat znova pomocí proxy uvedené v URL.
306 Switch Proxy
Je rezervován, ale nepoužit.
307 Temporary Redirect (since HTTP/1.1)
Stránka byla dočasně přesunuta na jiné místo.
308 Permanent Redirect
Funguje stejně jako 301, ale nemění metodu POST na GET.

4xx Client Error

400 Bad Request
Požadavek nemůže být vyřízen, poněvadž byl syntakticky nesprávně zapsán.
401 Unauthorized
Používán tam, kde je vyžadována autorizace, ale nebyla zatím provedena.
402 Payment Required
Rezervován pro budoucí účely.
403 Forbidden
Požadavek byl legální, ale server odmítl odpovědět. Na rozdíl od 401 Unauthorized response zde nehraje žádnou roli autorizace.
404 Not Found
Požadovaný dokument nebyl nalezen, ale v budoucnosti může ale i nemusí být dostupný.
405 Method Not Allowed
Požadavek byl zavolán na zdroj s metodou, kterou nepodporuje. Například se jedná o formulář, který odesílá data metodou POST, a někdo se jej místo toho pokusí odeslat metodou GET.
406 Not Acceptable
Server umí generovat pouze odpověď, která není klientem podporována.
407 Proxy Authentication Required
Před provedením požadavku je nutné, aby byl tento požadavek autentizován proxy serverem.
408 Request Timeout
Vypršel čas vyhrazený na zpracování požadavku.
409 Conflict
Indikuje, že požadavek nemůže být splněn vzhledem ke konfliktu.
410 Gone
Říká, že daná stránka již není nadále dostupná.
411 Length Required
Klient v požadavku nespecifikuje vyžadovanou délku obsahu – není definována hlavička Content-Length.
412 Precondition Failed
Přednastavená podmínka v požadavku byla serverem vyhodnocena jako chybná.
413 Request Entity Too Large
Server neakceptoval požadavek, poněvadž požadované množství je příliš velké.
414 Request-URI Too Long
URI na požadavek je příliš dlouhé.
415 Unsupported Media Type
Požadavek obsahuje serverem nepodporovaný typ média, a proto nebyl vykonán.
416 Requested Range Not Satisfiable
Klient požaduje část souboru, ale server nemůže tuto část zajistit. Může se objevit, je-li v požadavku vyplněna hlavička Range s rozsahem nevyhovujícím souboru.
417 Expectation Failed
Server nemůže dosáhnout předpokladu v hlavičce Expect.
418 I'm a teapot
Definovaný v roce 1998 jako Aprílový žert.
422 Unprocessable Entity (WebDAV) (RFC 4918)
Požadavek je syntakticky správně, ale kvůli sémantickým chybám ho nebylo možné splnit.
423 Locked (WebDAV) (RFC 4918)
Požadovaný zdroj je uzamčen.
424 Failed Dependency (WebDAV) (RFC 4918)
Tento požadavek skončil neúspěchem vzhledem k neúspěšnému předchozímu požadavku.
425 Unordered Collection (RFC 3648)
426 Upgrade Required (RFC 7231)
Klient by měl použít jiný protokol.
428 Precondition Required (RFC 6585)
Původní server vyžaduje, aby byl požadavek podmíněn. Cílem je zabránit problému ztracené aktualizace, kdy klient získá (metodou GET) stav zdroje, upraví jej a přenese (metodou PUT) jej zpět na server, zatímco třetí strana změnila stav zdroje na serveru, což vedlo ke konfliktu.[3]
429 Too Many Requests (RFC 6585)
Uživatel odeslal příliš mnoho požadavků v určené době. Určeno pro použití se schématy omezení frekvence požadavků.[3]
431 Request Header Fields Too Large (RFC 6585)
Server není ochoten zpracovat požadavek, protože buď jednotlivá pole hlavičky, nebo všechna pole hlavičky společně, jsou příliš velká.[3]
449 Retry With
Rozšíření protokolu od společnosti Microsoft. Po provedení patřičné akce může být požadavek opakován.
450 Blocked by Windows Parental Controls
Další rozšíření protokolu od společnosti Microsoft. Tato chyba je vrácena, když je spuštěn nástroj Windows Parental Controls a je zablokován přístup k určité stránce.
451 Unavailable For Legal Reasons
Nedostupné z právních důvodů.
499 Client Closed Request
Rozšíření od Nginx. Kód je určen pro zaznamenávání v případě, že klient ukončil spojení během zpracovávání požadavku serverem.

5xx Server Error

Server nedokázal zpracovat validní požadavek. Stavové kódy začínající číslicí "5" indikují případy, kdy server zaznamenal chybu, nebo není schopen zpracovat požadavek. Při odpovědi na požadavek HEAD by server měl přiložit upřesnění chyby a zda je tento stav dočasný či trvalý. Následně by měla tato informace být zobrazena uživateli jeho prohlížečem.

500 Internal Server Error
Obecná chybová zpráva. Při zpracovávání požadavku došlo ke blíže nespecifikované chybě.
501 Not Implemented
Nebyla rozpoznána metoda požadavku, nebo server tuto metodu neovládá.
502 Bad Gateway
Tuto zprávu zasílá proxy server klientovi, když od serveru obdržel chybovou zprávu.
503 Service Unavailable
Služba je dočasně nedostupná. Může být způsobena přetížením serveru nebo z důvodu údržby.
504 Gateway Timeout
Tuto zprávu zasílá proxy server klientovi v případě, že nedostal od cílového serveru odpověď v daném čase (obdržel od něj 408 :Request Timeout).
505 HTTP Version Not Supported
Server nepodporuje verzi protokolu HTTP použitou v požadavku.
506 Variant Also Negotiates (RFC 2295)
507 Insufficient Storage (WebDAV) (RFC 4918)
509 Bandwidth Limit Exceeded (Apache bw/limited extension)
Není specifikován v RFC.
510 Not Extended (RFC 2774)
Ke zpracování požadavku jsou potřebná další rozšíření.

Odkazy

Související články

Externí odkazy

Reference

  1. Hypertext Transfer Protocol (HTTP) Status Code Registry [online]. Iana.org [cit. 2016-03-05]. Dostupné online. (anglicky)
  2. Kódy stavu HTTP ve službě IIS 7.0, IIS 7.5 a IIS 8.0 [online]. Microsoft, rev. 2014-03-07 [cit. 2016-03-05]. Dostupné online.
  3. NOTTINGHAM, M.; FIELDING, R. RFC 6585 – Additional HTTP Status Codes [online]. Internet Engineering Task Force, April 2012 [cit. 2012-05-01]. Dostupné online. (anglicky)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.