Content-Encoding ヘッダー
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
Content-Encoding は表現ヘッダーで、リソースに適用されたエンコード方式とその順序を示します。
これにより、受信側はデータをどのようにデコードすれば、Content-Type ヘッダーで指定された元のコンテンツ形式を取得できるかを把握できます。
コンテンツのエンコード方式は、主に元のメディア形式に関する情報を失うことなくメッセージデータを圧縮するために使用されます。
サーバーは可能な限りデータを圧縮し、適切な場合にはコンテンツエンコーディングを使用すべきです。
.zip や .jpeg などの既に圧縮されたメディア形式をさらに圧縮すると、ファイルサイズが増加する可能性があるため、通常は適切ではありません。
元のメディアが既にエンコードされている場合(例えば .zip ファイルとして)、この情報は Content-Encoding ヘッダーには含まれません。
Content-Encoding ヘッダーが存在する場合、他のメタデータ(例:Content-Length)は、明示的に指定されていない限り、元のリソースではなくデータのエンコードされた形式のものを表します。
コンテンツエンコード形式と Transfer-Encoding との違いは、Transfer-Encoding が HTTP メッセージ自体のネットワーク上での配信方法をホップバイホップで処理するという点です。
| ヘッダー種別 | 表現ヘッダー |
|---|---|
| 禁止リクエストヘッダー | いいえ |
構文
Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
Content-Encoding: br
Content-Encoding: zstd
Content-Encoding: dcb
Content-Encoding: dcz
// 複数の場合、適用された順序
Content-Encoding: deflate, gzip
ディレクティブ
gzip-
Lempel-Ziv coding (LZ77) を使用し、32 ビットの CRC が付いた形式です。 これは UNIX の gzip プログラムの独自形式です。 HTTP/1.1 標準は、このエンコード方式に対応するサーバーは、互換性の面から
x-gzipもエイリアスとして解釈するよう推奨しています。 compress-
Lempel-Ziv-Welch (LZW) アルゴリズムを使用した形式です。 この値の名前は、このアルゴリズムを実装している UNIX の compress プログラムから取られました。 このエンコード方式は、特許問題(2003 年に期限切れ)を一因として、 compress プログラムが多くの UNIX ディストリビューションから削除されたのと同様に、現在では多くのブラウザーから削除されています。
deflate-
zlib 構造(RFC 1950 で定義)の deflate 圧縮アルゴリズム(RFC 1951) で定義)を使用します。
brzstddcbExperimental-
圧縮辞書 Brotli アルゴリズムを使用した形式です。圧縮辞書転送を参照してください。
dczExperimental-
圧縮辞書 Zstandard アルゴリズムを使用した形式です。圧縮辞書転送を参照してください。
例
gzip での圧縮
クライアント側では、送信で使用してほしい圧縮方式のリストを HTTP リクエストで示すことができます。 Accept-Encoding ヘッダーを使用して、コンテンツのエンコード方式の交渉が行われます。
Accept-Encoding: gzip, deflate
サーバーは使用した方式を、 Content-Encoding レスポンスヘッダーで応答します。
Content-Encoding: gzip
なお、サーバーはどの圧縮方式も使用することを義務づけられていません。圧縮はサーバー設定や使用しているサーバーモジュールに強く依存します。
仕様書
| Specification |
|---|
| HTTP Semantics # field.content-encoding |