Stavové kódy a hlášení v odpovědi protokolu HTTP
Jistě všichni znáte chybu 404 Not Found. Jedná se ale jen o jeden z mnoha stavů, ve kterých se může odpověď serveru nacházet. Jak vypadají ty ostatní a co znamenají?
HTTP (Hypertext Transfer Protocol) je protokol používaný při komunikaci mezi prohlížečem a webovým serverem. Je to tzv. aplikační protokol, který pro přenos po síti využívá protokoly na nižší úrovni síťového modelu – protokol TCP zajišťující spolehlivou spojovanou službu.
Protokol HTTP vychází z architektury klient-server. Klient, v tomto případě internetový prohlížeč, se spojí se serverem a pošle mu požadavek. Server jako reakci na klientův požadavek zasílá odpověď. Přesný formát požadavku a odpovědi je definován ve specifikaci protokolu HTTP. Aktuální verzí je HTTP 1.1.
Požadavek klienta
HTTP-metoda URL-dokumentu HTTP-verze
hlavičky (každá na nový řádek)
prázdný řádek
data z formuláře (u HTTP-metody POST)
Odpověď serveru
Odpověď se nesestává pouze ze samotného obsahu HTML stránky, ale obsahuje i další informace (vlastně metadata).
HTTP-verze stavový-kód stavové-hlášení
hlavičky (každá na nový řádek)
prázdný řádek
obsah odpovědi
Záhlaví požavků a odpovědí
HTTP-metoda – jedná se především o metody GET a POST, v případě POST se data z formuláře vloží v požadavku až na konec za prázdný řádek, v případě GET jsou součásti URL dokumentu
Hlavičky přenášejí doplňkové informace od klienta k serveru a naopak. Protokol HTTP je tzv. bezestavový, tj. server nerozlišuje, které požadavky klientů spolu jak souvisí. Proto byly vymyšleny cookies, které také do hlaviček serveru i klienta patří. Seznam hlaviček, jejich použítí a způsob jejich čtení z požadavků klienta a zápisu do odpovědi klienta se dočtete v článku Hlavičky (headers) v PHP.
Stavový kód a stavové hlašení
Stavový kód je číslo, ke kterému přísluší stavové hlášení. Stavové hlášení je jeho slovní popis. Celá dvojice v odpovědi klientovi hodnotí, jak se podařilo splnit jeho požadavek. Všechny kódy se dají rozdělit na následující kategorie:
Kategorie | Rozsah stavových kódů | Popis |
Informační | 100 – 199 | Zprávy definované konkrétní aplikací. |
Úspěch | 200 – 299 | Požadavek byl úspěšně zpracován. |
Přesměrování | 300 – 399 | Klient musí pro konečné zpracování požadavků vykonat určitou činnost. O této činnosti se uživatel nemusí dovědět. |
Chyba klienta | 400 – 499 | Problémy na straně klienta. |
Chyba serveru | 500 – 599 | Problémy na straně serveru. |
Připravil jsem pro vás i rozpis některých dvojic stavový kod – stavové hlášení včetně popisu akce, která s nimi souvisí.
Stavový kód | Popis |
100 Continue | Klient může pokračovat v zasílání požadavku. |
101 Switching Protocols | Server mění protokol. |
200 OK | Operace proběhla bez chyby, požadavek je úspěšně splněn. |
201 Created | Výsledkem požadavku je nově vytvořený objekt. |
202 Accepted | Byl přijat asynchronní požadavek. Požadavek byl správně akceptován, odpovídající činnost se však ještě zatím nemusela provést. |
204 No Content | Požadavek byl úspěsný, ale jeho výsledkem nejsou žádná data pro klienta. |
300 Multiple choises | Požadovaný zdroj se dá získat z několika různých míst. V odpovědi se vrací seznam všech možností. |
301 Moved Permanently | Požadovaná adresa URL se trvale přesunula na novou adresu URL. Všechny další odkazy musí použít tuto novou URL. |
302 Moved Temporarily | Požadovaná adresa URL se dočasně přesunula na novou adresu URL. Všechny další odkazy mohou používat dosavadní URL. |
304 Not Modified | Podmíněný požadavek byl správně zpracován, dokument však od udané doby nebyl modifikován. |
400 Bad Request | Server nerozumí požadavku, klient jej musí opravit a poslat znovu. |
401 Unauthorized | Jestliže byl původní požadavek klienta anonymní, musí být nyní autentizován. Pokud už požadavek byl autentizován, pak byl přistup odepřen. |
403 Forbidden | Server nemůže požadavku vyhovět, autorizace nebyla úspěšná. |
404 Not Found | Server nenašel zadanou adresu URL. |
405 Method Not Allowed | Použitá metoda není přípustná pro dosažení požadovaného objektu. |
406 Not Acceptable | Požadovaný objekt není k dispozici ve formátu podporovaném klientem. |
408 Request Timeout | Klient nedokončil odesílání požadavku v časovém limitu. |
410 Gone | Požadovaný objekt byl trvale odstraněn. |
415 Unsupported Media Type | Požadavek obsahuje data v serveru neznámém formátu. |
500 Internal Server Error | Na serveru došlo k neočekávané chybě. |
501 Not Implemented | Tento požadavek server nepodporuje. |
502 Bad Gateway | Proxy server nebo brána obdržely od dalšího serveru neplatnou odpověď. |
503 Service Unavailable | Server dočasně nemůže nebo nechce zpracovat požadavek. Většinou když je přetížený nebo se provádí údržba. |
505 HTTP Version Not Supported | Server nepodporuje verzi HTTP v daném požadavku. |
Zábavné chyby
Stavová hlášení, především chybu 404 Not Found, nemusíte brát tak tragicky. Na Intervalu nedávno vyšel článek Žertovná novinová zpráva a subdomény v PHP, v němž Pavel Růžička popisuje, jak udělat skript zobrazující různé žertovné zprávy jako náhrady za chybová hlášení protokolu HTTP.
Svůj archiv několika zajímavě pozměněných chybových hlášení vám dávám ke stažení. Osobně také používám jedno z nich.
Jak poslat klientovi stavový kód a stavové hlášení v PHP
Jako první z hlaviček, kterou skript PHP posílá, uveďte následující. Je rozdíl, zda PHP pracuje, jako CGI spustitelné nebo jako modul. Proto si zvolte tu správnou, případně uveďte v kódu obě (mě to fungovalo).
header („Status: 404 Not Found“); // pro CGI
header ($SERVER_PROTOCOL. “ 404 Not Found“); // pro modul
Zvolil jsem nejexponovanější status a to 404 Not Found. Nahraďte si jej podle potřeby jakýmkoli jiným např. z tabulky.
Jak poslat klientovi stavový kód a stavové hlášení v ASP
ASP má na posílání stavových kódů a zpráv vlastnost Status objektu Response.
Response.Status = „404 Not Found“
Související články
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
ZONER Webmail jako první v Česku přináší BIMI s VMC
11. července 2024 -
AI na dosah ruky: Jak je to s AI v osobních zařízeních?
22. ledna 2024 -
Monitory OLED: klíčové pojmy a funkce
13. května 2024 -
Užitečné nástroje pro bezpečnost na internetu
17. října 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024