ERR_INVALID_CHUNKED_ENCODING は、応答を完全な chunked メッセージとしてデコードできなかったことを意味します。一部のコンテンツが正常に到着したからといって、残りの応答が妥当だったことにはなりません。

  1. レスポンスヘッダーと最初のデコーダーエラーを保存する。 どのコンポーネントが報告したのか、メッセージが chunked と宣言されていたのかを確定します。
  2. 停止位置を特定する。 HTTP/1.1 chunked 符号化にはサイズ、対応するデータ、区切り、終端チャンクが必要で、該当する場合は trailer も含みます。早期の接続切断と不正なサイズは別の手がかりです。
  3. 同じ制御されたリクエストを想定経路で比較する。 そのリクエストをプロキシと upstream のログと突き合わせます。その時点での upstream の切断、中間変換、アプリケーションによるキャンセルを探します。

TCP バッファサイズから HTTP のフレーミングを推測してはいけません。 1 回の socket 読み取りに半分のチャンクや複数のチャンクが含まれることがあり、その後ライブラリがデコード済みコンテンツを別のバッファで公開することがあります。JSON レコードにはさらに別の境界があります。プロキシは元のパケット境界を保たずに応答を再フレーミングできます。

証拠が古い Squid 実装を指す場合は、その結論とともにリリース番号を残してください。Squid 2.x のパッチ助言は現在のすべてのリリースを説明するものではありません。比較の間は通常のデコードと証明書検証を維持してください。エラーを抑止すると、不完全なファイルが成功したダウンロードのように見えてしまいます。

関連記事