Přejít na hlavní obsah

Návody / HTTP stavové kódy vysvětlené

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-continue a 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 Upgrade vyžá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 Link brzy, 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 Continue visí, dokud nevyprší jeho vlastní timeout.
  • Upgrade na WebSocket, který se nikdy nedostane ke 101, protože proxy před aplikací odstraní hlavičky Upgrade a Connection. 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

  1. Použijte podrobný klient. Obyčejné curl -I ukáže jen hlavičky závěrečné odpovědi, takže si vyžádejte celou výměnu:
    curl -v -H "Expect: 100-continue" --data-binary @big.bin https://example.com/upload
    Spolupracující server odpoví HTTP/1.1 100 Continue ještě předtím, než odejde tělo, a pak přijde závěrečné 2xx nebo 4xx.
  2. 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í.
  3. U early hints si vyžádejte stránku a hledejte blok 103 př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á.
  4. 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í.

Zkontrolovat hned

Spusťte bezplatnou kontrolu na svém webu - bez registrace.

HTTP check

Sledovat trvale

Dostanete upozornění ve chvíli, kdy něco přestane fungovat: HostTracker kontroluje z více než 300 lokalit a upozorní vás e-mailem, SMS, přes Slack, Telegram a další.

Funkce HostTracker

Více v této sekci: HTTP stavové kódy vysvětlené