Stránka chatu se načte, ale živé připojení selhává: kam se podívat
Stránka a transport chatu jsou různé požadavky. Prozkoumejte WebSocket, proud událostí nebo dlouhé dotazování a poté oddělte nastavení, doručení a životnost.
Otevřete panel sítě ještě před načtením stránky chatu a pak najděte požadavek, který nese zprávy, místo toho, který vykresluje obal. Dokument, skripty, výměna přihlášení i transport chatu mohou směřovat na různé hostitele. Většina hlášení, že VPN rozbila chat, ve skutečnosti popisuje selhání jednoho z těchto čtyř požadavků. Sledujte je v pořadí a odpověď je obvykle vidět během prvních dvou minut.
Najděte požadavek, který nese zprávy
Jakmile se stránka usadí, filtrujte podle typu: WebSocket se objeví jako vlastní položka, proud událostí zůstává otevřený s rostoucí odpovědí a dlouhé dotazování se opakuje v pravidelném intervalu. Zapište schéma, hostitele, port a stav toho, který nese aktualizace. Poznamenejte, zda začal před přihlášením, nebo po něm, protože transport otevřený před autentizací má obvykle jiný návrh než ten otevřený po ní. Přečtěte hlavičky požadavku na upgrade nebo přijatý typ obsahu, protože určují transport, který nasazená stránka skutečně zvolila.
Staré příspěvky na fórech popisují transporty, které produkty přestaly používat před lety, takže věřte tomu, co zaznamenal prohlížeč, ne článku. Pokud položka úplně chybí, klientský kód možná nikdy spojení nezkusil, což ukazuje na dřívější selhání skriptu nebo konfigurace. Načtená stránka dokazuje jen to, že dokument dorazil, a toto rozlišení rozhoduje, zda vůbec ladíte síť.
Nastavení, doručení a životnost selhávají různě
WebSocket se otevírá upgradem HTTP, na který se odpovídá stavem 101, a vše poté jsou rámované zprávy místo stahování stránek, dvě fáze, které RFC 6455 drží výslovně oddělené. Proud událostí odpovídá streamovacím typem obsahu a drží tělo odpovědi otevřené. Oba mohou selhat při otevření, otevřít se a nic nedoručit, nebo se otevřít, doručit a pak tiše zemřít.
wscat -c wss://chat.example.com/socket -H "Origin: https://chat.example.com"
curl -N -H "Accept: text/event-stream" https://chat.example.com/events
Zachyťte první smysluplné selhání, než se dotknete profilu, protože tři časování ukazují na různé vrstvy. Pokud se handshake nikdy nedokončí, porovnejte ho s obyčejným HTTPS požadavkem na stejného hostitele, abyste viděli, zda se k němu vůbec něco dostane. Pokud se dokončí a zprávy nedorazí, sledujte rámce nebo tělo proudu, zatímco někdo z jiného účtu posílá testovací zprávu. Pokud to funguje a pak se zastaví, poznamenejte přesný čas a kód uzavření, protože tato dvojice určuje, který konec to vzdal.
Kód 1006 znamená, že se socket zavřel bez rámce uzavření, což je podoba prostředníka nebo nečinnostního timeoutu zevnitř prohlížeče. Heartbeat VPN nedokazuje, že vnitřní relace aplikace je stále živá.
Živý hostitel je samostatný cíl
Backendy chatu často žijí na vlastním názvu hostitele, někdy na jiném portu nebo za samostatným certifikátem. Tento cíl potřebuje vlastní překlad, trasu a ošetření proxy a rozdělené tunelování může stránku zahrnout a socket vyloučit. Přeložte živý název hostitele z klientského stroje a potvrďte, že odpovídá adresou, kterou v této síti očekáváte. Zkontrolujte řetěz certifikátů konkrétně pro tento název hostitele, protože divoký certifikát pokrývající web vždy nepokrývá koncový bod socketu.
Pokud je v cestě proxy, potvrďte, že povoluje upgrade nebo dlouhodobou odpověď, místo aby ji bufferovala. Firemní proxy přepisující HTML často zvládají upgrady WebSocket špatně, což vede ke stránce, která se vykreslí, ale chat se nikdy nepřipojí. Dva požadavky na stejný produkt tedy nejsou dva požadavky na stejného hostitele.
Opravte seznam cílů, ne bezpečnostní kontroly
Oprava seznamu cílů je změna směrování a patří tomu, kdo vlastní trasu. Zmírnění ověřování certifikátů nebo odstranění hlavičky Origin je bezpečnostní změna a patří tomu, kdo vlastní politiku, což je málokdy člověk ladící tiket. Nejrychlejší způsob, jak přimět připojení, aby se objevilo, je obvykle nejrychlejší způsob, jak umožnit incident.
Než cokoli změníte, zeptejte se vlastníka aplikace, které zdroje backend přijímá, a předejte odpověď tomu, kdo ovládá proxy. Pokud se chyba certifikátu objevuje jen tunelem, prohlédněte zařízení, které zachycuje, místo abyste instalovali obchvat.
Zaznamenejte dost na předání
Užitečný artefakt je krátký: URL stránky, živý koncový bod, výsledek handshake, čas prvního selhání a zda bylo zkoušeno opětovné připojení. Přidejte název profilu VPN a síť, na které jste byli, a každý čtenář může test zopakovat, aniž by kladl šest otázek. Skryjte cookies, autorizační hlavičky a těla zpráv a dejte přednost snímku sloupce s časováním před úplným exportem archivu. Rámce a síťové archivy mohou obsahovat soukromé zprávy a session tokeny, proto před přiložením vše prohlédněte.
Pokud je selhání tiché uzavření, uveďte kód uzavření a interval nečinnosti, který mu předcházel, protože tato dvojice obvykle určuje vlastníka timeoutu. Předejte záznam vlastníkovi aplikace nebo brány, místo abyste sami hádali hodnotu timeoutu. Jejich odpověď o podporovaném chování keepalive je ta, která tiket uzavře.