ERR_INVALID_CHUNKED_ENCODING означает, что ответ не удалось декодировать как полное сообщение chunked. То, что часть содержимого пришла успешно, не доказывает, что остальная часть ответа была корректной.

  1. Сохраните заголовки ответа и первую ошибку декодера. Установите, какой компонент её сообщил и был ли ответ объявлен как chunked.
  2. Найдите точку остановки. Кодирование chunked в HTTP/1.1 требует размеров, соответствующих данных, разделителей и завершающего блока, а при необходимости и trailers. Раннее закрытие соединения и искажённый размер — разные следы.
  3. Сравните тот же контролируемый запрос на целевом маршруте. Сопоставьте запрос с журналами прокси и вышестоящего сервера. Ищите закрытие со стороны вышестоящего сервера, преобразование посредником или отмену приложением в этой точке.

Не делайте выводов о кадрировании HTTP по размеру буфера TCP. Одно чтение сокета может содержать половину блока или несколько блоков; библиотека затем может выдать раскодированное содержимое в разных буферах. У записи JSON ещё одна граница. Прокси может переформатировать ответ, не сохраняя исходные границы пакетов.

Если данные указывают на старую реализацию Squid, сохраните номер её выпуска вместе с этим выводом. Советы по патчам для Squid 2.x не описывают каждый текущий выпуск. При сравнении сохраняйте обычное декодирование и проверку сертификатов: подавление ошибки может оставить неполный файл похожим на успешную загрузку.

Похожие статьи