クライアントが accept-encoding ヘッダーを省略した場合に圧縮データを返す

クライアントが accept-encoding ヘッダーを省略した場合に圧縮データを返す

の中にHTTP 1.1 標準では、「リクエストに Accept-Encoding フィールドがない場合、ユーザー エージェントはすべてのコンテンツ コーディングを受け入れられるとみなします。」と書かれています。

つまり、たとえば、accept-encoding フィールドが省略されている場合、サーバーは gzip でエンコードされた応答本文を返すことができます。

しかし実際には、一般的に使用されるほとんどのサーバー (Apache、nginx など) はこれを行わず、フィールドが省略されている場合は圧縮されていない応答を送信するようです。

より口語的な動作は、クライアントによって明示的に提案されたエンコーディングのみを使用することだと言ってもよいでしょうか? これは、標準に反しているにもかかわらず、クライアントに処理可能なエンコーディングのリストを提供させるという、より論理的な行動方針のように思えます。

答え1

ヘッダーが存在しない場合でも、エンコードは許容されないものとみなされますAccept-Encoding。他のガイダンスがない場合は、圧縮しないことが一般的な選択です。仕様で明示的に許可されているため、作業が節約されます。

表現にコンテンツ コーディングがない場合、Accept-Encoding フィールドで「identity;q=0」または「*;q=0」のいずれかが指定され、「identity」のより具体的なエントリがない限り、デフォルトで受け入れられます。

または、提供されていない場合は、Accept-Encoding実装が何らかのアルゴリズムを使用して必要なものを選択できます。コンテンツネゴシエーションをスキップすると、クライアントがエンコードをどう処理すればよいかわからないというわずかなリスクがあります。個人的にはそうしたいのですContent-Encoding: zstdが、2022 年現在、ユーザーエージェントでは一般的ではありません。

関連情報