Transfer-Encoding vs Content-Encoding

Transfer-EncodingとContent-Encodingの違いを理解します。チャンク転送エンコーディングとgzip圧縮の相互作用を学びます。

HTTP & Protocols

詳細な説明

Transfer-Encoding vs Content-Encoding

この2つのHTTPヘッダーはよく混同されますが、根本的に異なる目的を持っています。

Content-Encoding:ペイロードについて

Content-Encodingリソース自体に適用された変換を記述します。エンドツーエンドヘッダーです。

Transfer-Encoding:トランスポートについて

Transfer-Encodingはメッセージボディが転送のためにどのようにフォーマットされるかを記述します。ホップバイホップヘッダーです。

相互作用

レスポンスは両方を同時に使用できます:

Content-Encoding: gzip
Transfer-Encoding: chunked

これは元のリソースがgzip圧縮され、圧縮されたバイトがチャンクで送信されることを意味します。

主な違いのまとめ

側面 Content-Encoding Transfer-Encoding
目的 リソース変換 転送フォーマット
スコープ エンドツーエンド ホップバイホップ
一般的な値 gzip、br chunked
キャッシュされるか はい いいえ

ユースケース

curl、Wireshark、ブラウザDevToolsでのHTTP圧縮問題のデバッグ。圧縮が動作しない理由やContent-Lengthが欠落している理由の診断に役立ちます。

試してみる — Gzip Size Calculator

フルツールを開く