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

  1. Збережіть заголовки відповіді та першу помилку декодера. Встановіть, який компонент її повідомив і чи було відповідь оголошено як chunked.
  2. Знайдіть точку зупинки. Кодування chunked у HTTP/1.1 потребує розмірів, відповідних даних, роздільників і завершального блоку, а за потреби й trailers. Раннє закриття з'єднання та спотворений розмір — різні сліди.
  3. Порівняйте той самий контрольований запит на цільовому маршруті. Зіставте запит із журналами проксі та вищого сервера. Шукайте закриття з боку вищого сервера, перетворення посередником або скасування застосунком у цій точці.

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

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

Схожі статті