Accept-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.
HTTP の Accept-Encoding はリクエストヘッダーおよびレスポンスヘッダーで、送信者が理解できるコンテンツエンコード方式(通常は圧縮アルゴリズム)を示します。
リクエストでは、サーバーはコンテンツネゴシエーションを使用してクライアントからのエンコード方式提案の中から 1 つを選択し、その選択を Content-Encoding レスポンスヘッダーでクライアントに通知します。
レスポンスでは、要求されたリソースへのメッセージにおいて、サーバーが理解できるコンテンツエンコード方式に関する情報を提供し、そのエンコード方式をリソースへの後続のリクエストで使用できるようにします。
例えば、リソースへのリクエスト(例:PUT)で対応していないエンコード方式が使用された場合、Accept-Encoding が 415 Unsupported Media Type レスポンスに含まれます。
クライアントとサーバーが同じ圧縮アルゴリズムに対応していた場合でも、 identity の値が受け付けられる場合は、サーバーはレスポンスの本体を圧縮しないことを選択する場合があります。
これには主に 2 つの場合があります。
- 送信されるデータがすでに圧縮されており、 2 回目の圧縮によって送信するデータが小さくならない場合。 これは圧縮を伴う画像形式(JPEG など)が該当します。
- サーバーが過負荷になってもり、圧縮に必要な計算上のオーバーヘッドの余裕がない場合。例えば、 Microsoft はサーバーが計算能力の 80% 以上を使用している場合、圧縮しないことを推奨しています。
identity;q=0 または *;q=0 ディレクティブによって、identity 値が明示的に禁止(すなわちエンコーディングしないこと)が行われていない限り、サーバーは決して 406 Not Acceptable を返してはいけません。
メモ:
IANA レジストリーが公式なコンテンツエンコード方式の完全なリストを管理しています。
bzip および bzip2 エンコード方式は標準ではありませんが、特に過去ののものに対応するために使用されることがあります。
| ヘッダー種別 | リクエストヘッダー、レスポンスヘッダー |
|---|---|
| 禁止リクエストヘッダー | はい |
構文
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: zstd
Accept-Encoding: dcb
Accept-Encoding: dcz
Accept-Encoding: identity
Accept-Encoding: *
// 複数のアルゴリズムを品質値で重み付けする構文:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
ディレクティブ
gzip-
Lempel-Ziv coding (LZ77) と 32 ビット CRC を用いた圧縮形式です。
compress-
Lempel-Ziv-Welch (LZW) アルゴリズムを用いた圧縮形式です。
deflatebr-
Brotli アルゴリズムを用いた圧縮形式です。
zstd-
Zstandard アルゴリズムを用いた圧縮形式です。
dcbExperimental-
圧縮辞書 Brotli アルゴリズムを用いた形式です。圧縮辞書転送を参照してください。
dczExperimental-
圧縮辞書 Zstandard アルゴリズムを用いた形式です。圧縮辞書転送を参照してください。
identity-
等価関数を示します(つまり、圧縮も変更もありません)。この値は存在しなくても、常に受け付け可能とみなされます。
*(ワイルドカード)-
ヘッダーに挙げられていないあらゆるコンテンツエンコード方式に一致します。これはこのヘッダーがない場合の既定値です。すべてのアルゴリズムに対応しているという意味ではありません。評価される設定がないだけです。
;q=(q 値の重みづけ)-
weight と呼ばれる相対的な品質値を使用して表現される設定の順序づけをするための任意の値です。
例
>デフォルトの Accept-Encoding 値
ブラウザーのナビゲーションでは通常、以下の Accept-Encoding リクエストヘッダー値が設定されます。
GET /en-US/ HTTP/2
Host: developer.mozilla.org
Accept-Encoding: gzip, deflate, br, zstd
重み付けされた Accept-Encoding 値
次のヘッダーは、0(最優先)から 1(最高優先度)までの品質値を使用して Accept-Encoding の優先度を示しています。
Brotli 圧縮は 1.0 の重み付けが与えられ、br がクライアントの第一選択となります。次に 0.8 の優先度で gzip が続き、その他のコンテンツエンコーディングは 0.1 の優先度となります。
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
仕様書
| Specification |
|---|
| HTTP Semantics> # field.accept-encoding> |
ブラウザーの互換性
関連情報
415 Unsupported Media Type- HTTP コンテンツネゴシエーション
- コンテンツネゴシエーションの結果を伴うヘッダー:
Content-Encoding - 他の同様のヘッダー:
TE,Accept,Accept-Language - Brotli 圧縮
- GZip 圧縮
- Zstandard 圧縮
- 圧縮辞書転送ガイド