Accept-Encoding
Accept-Encoding
は HTTP のリクエストヘッダーで、クライアントが理解することができるコンテンツのエンコーディング(ふつうは圧縮アルゴリズム)を示します。コンテンツネゴシエーションを使用して、サーバーは提案されたものから一つを選択して使用し、 Content-Encoding
レスポンスヘッダーを使用してクライアントに選択結果を知らせます。
クライアントとサーバーが同じ圧縮アルゴリズムに対応していた場合でも、 identity
の値が受け付けられる場合は、サーバーはレスポンスの本体を圧縮しないことを選択する場合があります。これには主に 2 つの場合があります。
- 送信されるデータがすでに圧縮されており、 2 回目の圧縮によって送信するデータが小さくならない場合。これは圧縮を伴う画像形式(JPEG など)が該当します。
- サーバーが過負荷になってもり、圧縮に必要な計算上のオーバーヘッドの余裕がない場合。通常、 Microsoft はサーバーが計算能力の 80% 以上を使用している場合、圧縮しないことを推奨しています。
identity
の値、つまりエンコードをしないということは、 identity;q=0
または *;q=0
で identity
とは別な値が明確に設定されていない限り、サーバーは 406
Not Acceptable
エラーを返してはいけません。
メモ:
- IANA レジストリーが公式なコンテンツエンコーディングの完全なリストを管理しています。
- 他にも
bzip
およびbzip2
の 2 種類のエンコーディングが使用されることがありますが、標準ではありません。これはこれら 2 つの UNIX プログラムで使用されているアルゴリズムを実装しています。なお、前者は特許ライセンスの問題で開発終了しています。
構文
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *
// 複数のアルゴリズムを quality value で重み付けする構文:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5
ディレクティブ
gzip
-
Lempel-Ziv coding (LZ77) と 32 ビット CRC を用いた圧縮形式です。
compress
-
Lempel-Ziv-Welch (LZW) アルゴリズムを用いた圧縮形式です。
deflate
br
-
Brotli アルゴリズムを用いた圧縮形式です。
identity
-
等価関数を示します(つまり、圧縮も変更もありません)。この値は存在しなくても、常に受け付け可能とみなされます。
*
-
ヘッダーに挙げられていないあらゆるコンテンツエンコーディングに一致します。これはこのヘッダーがない場合の既定値です。すべてのアルゴリズムに対応しているという意味ではありません。評価される設定がないだけです。
;q=
(q 値の重みづけ)-
weight と呼ばれる相対的な品質値を使用して表現される設定の順序づけをするための任意の値です。
例
Accept-Encoding: gzip
Accept-Encoding: gzip, compress, br
Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1
仕様書
Specification |
---|
HTTP Semantics # field.accept-encoding |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- HTTP コンテンツネゴシエーション
- コンテンツネゴシエーションの結果を伴うヘッダー:
Content-Encoding
- 他の同様のヘッダー:
TE
,Accept
,Accept-Language