HTTPAccept-Encoding リクエストヘッダーは、コンテンツのどのエンコーディング (ふつうは圧縮アルゴリズム) をクライアントが理解することができるかを示します。 コンテンツ交渉を使用して、サーバーは提案されたものから一つを選択して使用し、 Content-Encoding レスポンスヘッダーを使用してクライアントに選択結果を知らせます。

クライアントとサーバーが同じ圧縮アルゴリズムに対応していたとしても、 (identity 値も可能であれば) サーバーはレスポンスの本文を圧縮しないことを選択することがあります。これには主に二つの場合があります。

  • 送信されるデータがすでに圧縮されており、更なる圧縮によって送信するデータが小さくならないこと。一部の画像フォーマットで該当する可能性があります。
  • サーバーが過負荷になっており、圧縮に費やせるだけの計算能力の余裕がない場合。通常、 Microsoft はサーバーが計算能力の80%以上を使用している場合、圧縮しないことを推奨しています。

エンコードしないことを表す identity 値が明示的に否定されていない限り、サーバーは406 Not Acceptable エラーを返してはいけません。ただし、 identity 値が明示的に否定される状況とは、 identity;q=0 が指定されるか、または、 identity に関する明示的な指定なしに *;q=0 が指定されることです。

メモ:
  • IANA レジストリが公式なコンテンツエンコーディングの完全なリストを管理しています。

  • 他にも bzip および bzip2 の二種類のエンコーディングが使用されることがありますが、標準ではありません。これはこれら二つの 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
zlib 構造体と deflate 圧縮アルゴリズムを用いた圧縮形式です。
br
Brotli アルゴリズムを用いた圧縮形式です。
identity
等価関数を示します (つまり、圧縮も変更もありません)。この値は存在しなくても、常に受け付け可能とみなされます。
*
それ以前に Accept-Encoding ヘッダーに挙げられていないあらゆるコンテンツエンコーディングに一致します。これはこのヘッダーがない場合の既定値です。すべてのアルゴリズムに対応しているという意味ではなく、好みを表明しないという意味にすぎません。
;q= (q 値の重みづけ)
weight と呼ばれる相対的な品質質を使用して表現される設定の順序づけをするための任意の値です。

Accept-Encoding: gzip

Accept-Encoding: gzip, compress, br

Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1

仕様書

仕様書 題名
RFC 7231, セクション 5.3.4: Accept-Encoding Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

このページの貢献者: minoki, mfuji09
最終更新者: minoki,