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ý.

  1. 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.
  2. 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.
  3. 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í.

Související články