Accept
使い方
Accept ヘッダーはコンテンツネゴシエーションを駆動します。クライアントが優先順位付きのメディアタイプの一覧を送り、サーバーは要求されたリソースについて利用可能な表現の中から最適な一致を選択します。
ブラウザはリクエストの文脈に応じてこのヘッダーを自動的に設定します。ナビゲーションのリクエストでは通常 text/html を要求し、img 要素では一般的な画像フォーマットを要求します。API クライアントはしばしば application/json や application/xml を送ります。
列挙されたいずれの型にも一致する表現をサーバーが持たない場合、期待されるレスポンスは 406 Not Acceptable です。実際には、多くのサーバーはこのヘッダーを無視して既定の表現を返します。
注意
Accept ヘッダーは必須ではありません。このヘッダーを省略することは、クライアントが任意のメディアタイプ(/)を受け入れることを意味します。ブラウザはフォールバックとして / を送り、多くのサーバーは Accept を完全に無視して、クライアントの好みに関わらず固定の Content-Type を返します。
media-type/subtype
text/html や application/json のような具体的なメディアタイプです。サーバーは type/subtype の組全体を具体的な優先指定として扱います。
media-type/*
サブタイプのワイルドカードです。image/* は、image/png、image/webp、image/avif のいずれであれ任意の画像フォーマットを受け入れることを示します。
*/*
任意のメディアタイプを受け入れます。このワイルドカードは、他のどの型も一致しないときのフォールバックとして機能します。
;q=(品質値)
相対的な優先度を表す 0 から 1 の間の重みです。値が大きいほど優先度が高いことを示します。省略した場合の既定の重みは 1.0 です。値 0 はその型が受け入れ不可であることを意味します。
例
HTML ページを要求するブラウザが、品質値で順位付けされた複数のメディアタイプを送ります。サーバーがサポートする中で最も重みの大きい型が選ばれます。
Accept: text/html, application/xhtml+xml, */*;q=0.8
XML をフォールバックとして JSON を要求する API クライアントは、XML により低い品質値を割り当てます。
Accept: application/json, application/xml;q=0.9
トークン消費を抑えるためにページを Markdown で要求し、HTML をフォールバックとする AI エージェントです。
Accept: text/markdown, text/html;q=0.9
AI エージェントとコンテンツネゴシエーション
Cloudflare のような CDN プロバイダーは、リクエストに Accept: text/markdown が含まれる場合、HTML ページをその場で Markdown に変換します。この変換はトークン数を最大 80% 削減するため、コンテンツネゴシエーションは LLM ベースのエージェントやクローラーにとって実用的な最適化になります。
構造化されたエラーレスポンスを要求する API クライアントは、通常のコンテンツタイプと並べて application/problem+json を使います。サーバーはエラーには problem details を、成功したレスポンスには JSON を返します。
Accept: application/problem+json, application/json
複数のテキスト形式を明示的な優先度とともに列挙するリクエストです。text/html は既定の重み 1.0 を持ち、続いて text/plain が 0.9、その他のテキスト形式が 0.8、それ以外のすべてが 0.7 となります。
Accept: text/html, text/plain;q=0.9, text/*;q=0.8, */*;q=0.7
注意
2 つの型が同じ品質値を持つ場合、より具体的な型が優先されます。text/html と text/* がどちらも重み 1.0 を持つ場合、サーバーは text/html を選びます。