Přeskočit na obsah

Stavové kódy HTTP

Odpověď HTTP začíná tříciferným kódem a krátkou frází důvodu. První číslice je celý souhrn: 1xx je prozatímní, 2xx uspěl, 3xx ukazuje někam jinde, 4xx vinu na žádost, 5xx vinu na server. Pokud si zapamatujete jen to, můžete přečíst protokol, který jste nikdy neviděli.

Frází důvodu zde jsou ty z RFC, v angličtině, protože to je to, co cestuje po drátě — server posílá "Not Found", ne překlad a fráze, kterou hledáte v protokolu, musí odpovídat bytům, které byly skutečně poslány.

Rozdíly, které způsobují skutečné potíže, jsou uvnitř tříd spíše než mezi nimi: 401 versus 403, 301 versus 308 a 502 versus 503 každý odpoví na jinou otázku o tom, co dělat dál, a každá se rutinně používá pro druhou.

1xx — Informační

3

Prozatímní: odpověď není finální a následuje další.

KódFrází důvoduCo to znamená
100ContinuePřijatá záhlaví, pokračujte v odesílání těla.
101Switching ProtocolsPřepínací protokoly — handshake WebSocket.
103Early HintsRané nápovědy: předem načtěte tyto prostředky, zatímco se připravuje skutečná odpověď.

2xx — Úspěch

5

Požadavek byl přijat, chápán a přijat.

KódFrází důvoduCo to znamená
200OKÚspěch s tělem.
201CreatedVytvořeno.Mělo by nést záhlaví Umístění ukazující na nový prostředek.
202AcceptedPřijatý k zpracování, kteréž se dosud stalo.
204No ContentÚspěch a záměrně bez těla.Správná odpověď na DELETE, nebo uložení bez ničeho, co by se mělo vrátit.
206Partial ContentČástečný obsah — odpověď na požadavek Range. Obnovitelné stažení.

3xx — Přesměrování

6

Zdroj je jinde, nebo vaší mezipaměť je stále dobrá.

KódFrází důvoduCo to znamená
301Moved PermanentlyTrvale přesunuto. Aktualizujte své odkazy; mezipaměti mohou toto navždy udržovat.
302FoundNalezeno — dočasné přesměrování.Široce implementováno jako přepnutí metody na GET, kterou 307 opravy.
303See OtherViz jiné: načtěte výsledek pomocí GET. Přesměrování po formuláři POST.
304Not ModifiedNeměnné — vaší mezipaměť je aktuální. Posláno bez těla.
307Temporary RedirectDočasné přesměrování, metoda a tělo zachovány.
308Permanent RedirectTrvalé přesměrování, metoda a tělo zachovány.

4xx — Chyba klienta

14

Požadavek je problém. Opakování beze změny selže znovu.

KódFrází důvoduCo to znamená
400Bad RequestServer nemohl vůbec analyzovat požadavek.
401UnauthorizedNeověřeno — server neví, kdo jste.Pojmenované Unauthorized, ale znamená to neověřené. Mělo by obsahovat WWW-Authenticate.
403ForbiddenOvěřeno a stále není povoleno. Lepší přihlašovací údaje nepomohou.
404Not FoundTakový zdroj neexistuje a server neřekne, zda tam kdy nebyl.
405Method Not AllowedŠpatná metoda pro tuto URL.Musí uvést, které fungují v záhlaví Allow.
406Not AcceptableNic dostupného ve formátu vaší přijetí záhlaví vůbec.
409ConflictKonflikt s aktuálním stavem — úprava proti zastaralé verzi.
410GonePryč: existoval a byl záměrně odstraněn. Silnější než 404.
413Content Too LargeTělo je větší než server přijímá.
415Unsupported Media TypeServer nezvládá tento typ obsahu Content-Type.
418I'm a teapotJsem čajník. Vtip k 1. dubnu 1998, trvale vyhrazen.
422Unprocessable ContentSprávně analyzován, obsah neplatný — chybějící pole, špatná hodnota.
429Too Many RequestsMíra omezena.Hledejte Retry-After před opakováním a exponenciálně se vraťte.
451Unavailable For Legal ReasonsBlokován z právních důvodů. Číslo je poklon Fahrenheitu 451.

5xx — Chyba serveru

6

Požadavek může být v pořádku. To jsou ty, které stojí za opakování.

KódFrází důvoduCo to znamená
500Internal Server ErrorNeošetřená chyba na serveru. Nic, co byste měli opravit.
501Not ImplementedServer vůbec neimplementuje tuto metodu.
502Bad GatewayProxy dosáhla upstream serveru a vrátila se něco nepoužitelného.
503Service UnavailableZáměrně neslužbu — přetížená nebo v údržbě.Stav, který by měl nést Retry-After.
504Gateway TimeoutProxy se vzdala čekání na upstream server.
505HTTP Version Not SupportedVerze HTTP v požadavku není podporována.

Časté dotazy

Jaký je rozdíl mezi 401 a 403?
401 Unauthorized znamená, že požadavek nebyl ověřen — server neví, kdo jste, a správný 401 obsahuje WWW-Authenticate záhlaví, které vám řekne, jak se tím prokázat. 403 Forbidden znamená, že přesně ví, kdo jste a stále se nemusíte mít. Opětovné pokus o 403 s lepšími přihlašovacími údaji pro stejnou identitu nepomohou.
Měl bych pro přesměrování použít 301 nebo 308?
308, pokud metoda záleží. Historicky byly 301 a 302 široce implementovány jako "přesměrování a přepnutí na GET", což tiše změní POST na GET. 307 a 308 byly zavedeny k příslibu metody a těla jsou zachovány. Pro trvalý přesun stránky, která je načítána pouze, zůstává 301 nejlépe pochopená volba.
Co znamená 422, že 400 nedělá?
400 Bad Request znamená, že server vůbec nemohl porozumět požadavku — znetvořený JSON, zlomené záhlaví. 422 Unprocessable Content znamená, že se správně analyzoval a obsah je přesto špatně: dobře vytvořené tělo se chybějícím povinným polem nebo datum v minulosti. Split je užitečný právě proto, že oprava klienta se v každém případě liší.
Je 418 skutečný stavový kód?
Je skutečné v tom, že je registrován a každá knihovna HTTP jej zná, a vtip v tom, že pochází ze dne 1. dubna 1998 Hyper Text Coffee Pot Control Protocol. Pokusy o recyklaci čísla pro praktické použití byly odmítnuty, takže je trvale vyhrazeno pro čajníky.
Proč se 503 liší od 502?
502 Bad Gateway znamená, že proxy dosáhla upstream serveru a vrátila se něco nepoužitelného. 503 Service Unavailable znamená, že server sám se aktuálně záměrně neposílá — přetížen nebo údržbou — a je to ten, který by měl nést Retry-After záhlaví, protože je to ten, který se očekává, že se obnoví.