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]
- 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.
- 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.
- 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.
- 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.
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í.
Hypertext Transfer Protocol (HTTP) Status Code Registry [online]. Iana.org [cit. 2016-03-05]. Dostupné online.Je zde použita šablona {{Cite web}}
označená jako k „pouze dočasnému použití“. 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.