200 OK: co to znamená a co to skrývá
200 OK znamená, že server požadavek přijal, porozuměl mu a vrátil úspěšnou odpověď, ale neříká nic o tom, jestli je obsah dané odpovědi správný. Oznámení o údržbě, chybová stránka i prázdná šablona se všechny dají obsloužit se 200.
Co 200 zaručuje
200 je standardní úspěšný stav. Říká vám úzkou a konkrétní sadu věcí: DNS se přeložila, TCP spojení se navázalo, TLS se vyjednalo, pokud byla URL přes HTTPS, server přijal řádek požadavku i hlavičky a vytvořil odpověď, kterou považuje za úspěšnou. U GET je tělo požadovaným prostředkem; u POST je to výsledek akce.
Co vám 200 neřekne, je, jestli stránka obsahuje katalog produktů, jestli se vykreslil formulář objednávky, jestli JavaScript vyplňující stránku dostal svá data, nebo jestli je odpověď, kterou jste dostali vy, stejná jako ta, kterou dostávají vaši návštěvníci v jiné zemi. To všechno žije v těle, a stavový kód se do těla nikdy nedívá.
200, které je ve skutečnosti selhání
Monitoring jen podle stavového kódu sám o sobě nestačí, protože rozbitý web odpoví 200 ve všech těchto případech:
- Stránka údržby. Záměrně obsluhovaná se 200 nasazovacím skriptem nebo pravidlem CDN. Uptime vypadá dokonale po celé okno výpadku.
- Zachycená výjimka aplikace. Framework chybu odchytí a vykreslí přátelskou stránku "něco se pokazilo" přes běžný pipeline šablon, který nastaví výchozí stav 200.
- Měkká 404. Zpráva "stránka nenalezena" vrácená se 200 místo 404. Návštěvníci jsou zmatení a vyhledávače si mohou URL nechat v indexu, nebo celý vzor vyhodnotit jako nízkou kvalitu.
- Prázdná skořápka vykreslovaná klientem. HTML dokument se v pořádku načte, ale volání API, které ho má naplnit, selhalo. Stav je 200 a stránka je prázdná.
- Zastaralá nebo špatnojazyčná cachovaná kopie. Edge uzel, jehož načtení z originu selhalo, dál obsluhuje to, co už má, se 200.
- Zaparkovaná nebo unesená doména. Po změně DNS odpoví se 200 s obsahem někoho jiného.
Pomalé 200 je pořád problém
Na době odezvy často záleží víc než na kódu. Stránka, které trvá dvanáct sekund vrátit 200, je pro většinu návštěvníků funkčně nedostupná, protože odejdou dřív, než se dokončí. Stavový kód nemá vůbec žádný časový rozměr, takže dobu odezvy musíte měřit a hodnotit prahem samostatně. Ze stejného důvodu se vyplatí sledovat i velikost: 200, které vrátí 300 bajtů tam, kde normálně vrací 80 kB, je silný signál, že se stránka vykreslila bez svého obsahu.
Jak ověřit, že je 200 skutečný úspěch
- Přečtěte si stavový řádek a čas dohromady:
curl -sI -o /dev/null -w "%{http_code} in %{time_total}s\n" https://example.com/ - Stáhněte tělo a ověřte řetězec, který se objeví jen tehdy, když stránka opravdu funguje, jako nadpis, cena nebo značka v patičce, ne něco, co obsahuje i chybová šablona.
- Ověřujte i nepřítomnost, ne jen přítomnost. Hledání frází jako "probíhá údržba", "dočasně nedostupné" nebo znění výjimky vašeho frameworku zachytí případ přátelské chyby.
- Porovnejte velikost odpovědi se známým dobrým základem. Náhlý propad délky těla obvykle znamená, že se vykreslila skořápka, ale obsah ne.
- Zkontrolujte hlubokou stránku, ne jen domovskou. Domovské stránky jsou nejsilněji cachované a nejspíš dál odpovídají 200, i když je aplikace za nimi rozbitá.
- Opakujte z více než jedné sítě. 200 z vaší kanceláře a chyba z jiného kontinentu ukazuje na DNS, CDN nebo geografické směrování, ne na samotnou aplikaci.
Co může zelená kontrola dostupnosti minout
Monitor, který čte jen stavový kód, bude hlásit zelený web po celý incident, který začal stránkou údržby, kterou nikdo neodstranil. Spárování kontroly stavu s ověřením klíčového slova a prahem doby odezvy je to, co promění "server odpověděl" na "stránka fungovala". HostTracker nabízí 13 typů monitorů a upozorňuje e-mailem, SMS, hlasovým hovorem, přes Slack, Telegram a další kanály, takže neshoda obsahu spustí stejné upozornění jako výpadek. Spusťte URL přes nástroj HTTP kontroly, abyste viděli její stav, hlavičky a čas, nebo si přečtěte rodinu 2xx a 500 Internal Server Error pro odpovědi, které přátelská chybová stránka skrývá.