TE
使い方
TE ヘッダーを使うと、クライアントは転送エンコーディングの優先度をサーバーに伝えられます。サーバーはこの情報をもとに、レスポンスボディの Transfer-Encoding に適したエンコーディングを選択します。
HTTP/1.1 では chunked 転送エンコーディングが常に暗黙的にサポートされており、TE ヘッダーに列挙する必要はありません。このヘッダーの主な役割は 2 つあります。転送レベルで適用される追加の圧縮アルゴリズム(gzip、deflate、compress)への対応を通知することと、Trailer フィールドへの対応を示すことです。
trailers の値は特に重要です。クライアントが TE: trailers を宣言しない限り、レスポンスが chunked エンコーディングを使っていたとしても、サーバーにはクライアントがトレーラーフィールドを処理するという保証がありません。トレーラーフィールドは、メッセージボディの後に付加されるチェックサムやデジタル署名といったメタデータを運びます。
各エンコーディングのディレクティブは、0 から 1 の範囲の任意の品質値(q)を受け付けます。値が大きいほど優先度が高いことを表します。品質値が指定されていない場合、サーバーは優先度を 1 として扱います。
注意
HTTP/2 と HTTP/3 では、TE ヘッダーで受け入れられる値は trailers だけです。転送レベルのエンコーディングはプロトコルのフレーミング層で扱われます。
trailers
trailers ディレクティブは、クライアントが chunked 転送エンコーディング内の Trailer フィールドを受け入れることを示します。この値は品質値による順位付けには関与しません。
gzip
gzip ディレクティブは、クライアントが転送レベルで 32 ビット CRC 付きの Lempel-Ziv 符号化(LZ77)をサポートすることを示します。
deflate
deflate ディレクティブは、クライアントが転送レベルで zlib 圧縮されたデータをサポートすることを示します。
compress
compress ディレクティブは、クライアントが転送レベルで Lempel-Ziv-Welch(LZW)圧縮をサポートすることを示します。
q (quality value)
q パラメーターは、各エンコーディングの優先度に相対的な重みを割り当てます。値は 0(受け入れ不可)から 1(最も優先)までの範囲です。サーバーは品質値を使って最適な転送エンコーディングを選択します。
例
クライアントがトレーラーフィールドと deflate 転送エンコーディングへの対応を通知します。品質値 0.5 により、列挙された他のエンコーディングの暗黙の既定値 1 と比べて deflate の優先度は低くなります。
TE: trailers, deflate;q=0.5
クライアントが gzip 転送エンコーディングを優先し、compress による転送もより低い優先度で受け入れます。
TE: gzip, compress;q=0.7
クライアントがトレーラーへの対応だけを示します。これは HTTP/2 接続で使われる標準的な形式です。
TE: trailers