【こんてんつねごしえーしょん】
コンテンツネゴシエーション とは?
最終更新:
💡 同じURLでも、希望や対応形式に合わせて中身を選ぶ
同じリソースについて、言語・データ形式・圧縮方式などの異なる表現から、返すものを選ぶHTTPの仕組み。サーバーがリクエストヘッダーの希望を参考に選ぶ方式などがある。
📌 このページのポイント
コンテンツネゴシエーションって、何を選ぶの?
具体的にはどんなヘッダー?
AcceptはHTMLや画像などの形式、Accept-Languageは言語、Accept-EncodingはgzipやBrotliなどの圧縮方式を伝えるよ。たとえばAccept-Language: ja, en;q=0.8は、日本語を英語より強く希望する指定なんだ。
ja, enと並べるだけでは、日本語優先にならないの?
q値を省略すると両方とも1だよ。同じq値の並び順を優先順位として扱う実装もあるけれど、その動作には頼れない。q値で差を付けても、サーバーが用意できる言語や選択方針に左右されるんだ。
画像にも使えるの?
使えるよ。同じ画像のAVIF、WebP、PNGなどを用意しておき、Acceptで受け取れる形式を伝える。ヘッダーだけで画像を変換するわけではないので、サーバー側で用意や変換、選択の処理を実装するんだ。
キャッシュには、何を伝えるの?
📖 おまけ:英語の意味
「Content Negotiation」 = コンテンツの交渉
💬 Negotiationは交渉。HTTPでは、同じリソースの異なる表現から返すものを選ぶ仕組みを指すよ。必ず何度も話し合う通信が必要という意味ではないんだ。