Zkoumání ERR_INVALID_CHUNKED_ENCODING přes proxy
Určete, kde se odpověď stává neúplnou nebo poškozenou, porovnáním jejího rámování, bodu zastavení a logů proxy trasy.
ERR_INVALID_CHUNKED_ENCODING znamená, že odpověď nebylo možné dekódovat jako úplnou chunked zprávu. To, že část obsahu dorazí úspěšně, nedokazuje, že zbytek odpovědi byl platný.
- Uchovejte hlavičky odpovědi a první chybu dekodéru. Zjistěte, která komponenta ji nahlásila a zda byla zpráva označena jako chunked.
- Najděte bod zastavení. Kódování HTTP/1.1 chunked vyžaduje velikosti, odpovídající data, oddělovače a ukončující chunk, případně s trailers. Předčasné uzavření spojení a poškozená velikost jsou různé stopy.
- Porovnejte stejný řízený požadavek na zamýšlené trase. Spárujte požadavek s logy proxy a upstreamu. Hledejte uzavření na upstreamu, převod zprostředkovatelem nebo zrušení aplikací v tomto bodě.
Neodvozujte rámování HTTP z velikosti TCP bufferu. Jedno čtení socketu může obsahovat půl chunku nebo několik chunků; knihovna pak může dekódovaný obsah vystavit v různých bufferech. JSON záznam má další hranici. Proxy může odpověď přerámovat, aniž by zachovala původní hranice paketů.
Pokud důkazy ukazují na starou implementaci Squid, ponechte u tohoto závěru i číslo jejího vydání. Rady k záplatám pro Squid 2.x nepopisují každé současné vydání. Během srovnávání zachovejte normální dekódování a ověřování certifikátů: potlačení chyby může nechat neúplný soubor vypadat jako úspěšné stažení.