Informační stavové kódy 1xx
Stavový kód 1xx je předběžná odpověď: server tím klientovi říká, že požadavek přijal a zpracování pokračuje, a skutečná závěrečná odpověď teprve přijde. Zatím nic neuspělo ani neselhalo, a proto se kódy 1xx v přístupových lozích ani na monitorovacích dashboardech skoro nikdy neobjeví.
Co je předběžná odpověď
Každá jiná rodina stavů výměnu ukončí. 200, 404 nebo 502 je poslední slovo serveru k danému požadavku. 1xx je jiný: server pošle stavový řádek a případné hlavičky, pak nechá spojení otevřené a později pošle druhou odpověď. RFC 9110 vyžaduje, aby klienti uměli před závěrečnou odpovědí přečíst jednu nebo víc odpovědí 1xx, a dovoluje každému klientovi, který danému kódu 1xx nerozumí, ho ignorovat.
Předběžná odpověď se zahodí, jakmile dorazí ta závěrečná, takže ji většina nástrojů vůbec neukáže. Panel sítě ve vašem prohlížeči, přístupový log vašeho webového serveru i monitorovací kontrola hlásí všechny závěrečný stav. Předběžná odpověď odvedla svou práci na úrovni přenosu a zmizela.
Kódy 1xx, na které můžete narazit
- 100 Continue. Klient poslal hlavičky požadavku s
Expect: 100-continuea před odesláním velkého těla se zastavil. 100 znamená "hlavičky vypadají v pořádku, pošli tělo". Pokud by server požadavek stejně odmítl, může místo toho rovnou odpovědět závěrečnou chybou, a klient nikdy nezmarní šířku pásma nahráváním dat. Tohle je jediný kód 1xx, který na běžných webech dělá užitečnou práci, obvykle za velkými nahráváními souborů a u API klientů jako curl. - 101 Switching Protocols. Klient si hlavičkou
Upgradevyžádal změnu protokolu a server souhlasil. Je to normální, úspěšný výsledek WebSocket handshake, takže 101 v logu je obecně dobré znamení, ne incident. - 102 Processing. Definovaný specifikací WebDAV pro dlouho běžící požadavky, aby klient věděl, že se server nezasekl. Mimo WebDAV se implementuje málokdy a na běžném webu na něj narazíte málokdy.
- 103 Early Hints. Server pošle hlavičky
Linkbrzy, ještě než dokončil generování stránky, aby prohlížeč mohl začít přednačítat styly, fonty nebo skripty, zatímco se HTML pořád ještě vytváří. Je to funkce pro výkon, ne signál chyby, a obvykle ji zapínáte záměrně na CDN nebo na originu.
Proč 1xx není co opravovat
1xx samo o sobě nenese žádnou chybu. Neexistuje nic jako stránka, která "vrací 100" nebo "vrací 101", tak jako stránka může vracet 404. Pokud máte problém a 1xx je někde ve výměně, zajímavá informace je vždy až závěrečný stavový kód, který následoval, nebo fakt, že žádná závěrečná odpověď vůbec nedorazila.
Skutečné poruchy v okolí 1xx se projeví jako zaseknutí nebo závěrečná chyba, ne jako samotné 1xx:
- Starý proxy nebo load balancer, který předběžné odpovědi nepředává, takže klient čekající na
100 Continuevisí, dokud nevyprší jeho vlastní timeout. - Upgrade na WebSocket, který se nikdy nedostane ke 101, protože proxy před aplikací odstraní hlavičky
UpgradeaConnection. Spojení se pak buď přepne na náhradní řešení, nebo rovnou selže. - Early hints vydané s odkazy na prostředky, které už neexistují, což plýtvá požadavky, aniž by to stránku rozbilo.
Jak si odpověď 1xx zobrazit sami
- Použijte podrobný klient. Obyčejné
curl -Iukáže jen hlavičky závěrečné odpovědi, takže si vyžádejte celou výměnu:
Spolupracující server odpovícurl -v -H "Expect: 100-continue" --data-binary @big.bin https://example.com/uploadHTTP/1.1 100 Continueještě předtím, než odejde tělo, a pak přijde závěrečné 2xx nebo 4xx. - U cesty WebSocket zkontrolujte, jestli se handshake dostane až ke
HTTP/1.1 101 Switching Protocols. Pokud ne, podívejte se nejdřív na vrstvu proxy: hlavičky pro upgrade jsou hop-by-hop a řada běžných konfigurací reverzní proxy je ve výchozím nastavení zahodí. - U early hints si vyžádejte stránku a hledejte blok
103před závěrečnou odpovědí. Ne každý mezičlánek ho propustí, takže chybějící 103 vždy neznamená, že ho origin neposílá. - Pokud se velké nahrávání zasekne bez jakékoli odpovědi, zkuste to znovu bez hlavičky
Expect. Pokud opakovaný pokus uspěje, něco mezi vámi a originem předběžné odpovědi polyká.
Monitoring výměny, kterou nevidíte
Protože kódy 1xx se nikdy nedostanou do logu ani na dashboard, sledujete závěrečnou odpověď a to, jak dlouho trvalo, než dorazila. Cesta nahrávání zaseknutá na předběžné odpovědi vypadá zvenčí přesně jako pomalý nebo vypršelý endpoint, a externí kontrola to hned uvidí. HostTracker spouští kontroly z více než 300 kontrolních bodů ve 158 městech, takže požadavek zaseknutý za jednou konkrétní síťovou trasou lze odlišit od skutečného výpadku. Spusťte URL přes nástroj HTTP kontroly, abyste viděli závěrečný stav a dobu odezvy. Návody kódy úspěchu 2xx a kódy přesměrování 3xx pokrývají odpovědi, které výměnu skutečně ukončují.