<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">希望<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">能力の記述</title></anchor>に基づき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を選択する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>を、
<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proactive negotiation</anchor></dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>
(<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>鯖駆動折衝</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">server-driven negotiation</rt></rubyb></dfn>) といいます。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</cite> (<time>2014-06-07 01:55:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7231#section-3.4.1">https://tools.ietf.org/html/rfc7231#section-3.4.1</anchor-external></li></ul></refs></section><section><h1>処理モデル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proactive negotiation</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>が送信した希望と、
利用可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>に基づき、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を選択して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>とするものです。
選択においては、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容符号化</anchor>などの特徴を、
利用可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>のものと、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に明示された条件や <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">User-Agent:</anchor></code>
などから暗示された条件などと何らかの方法で比較します。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p><figure class="sequence"><dl><dt>C</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor></dd><dt>S</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor></dd><dt>C -&gt; S</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor></dd><dt>#S#</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を選択</dd><dt>S -&gt; C</dt><dd>選択した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を含む<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor></dd></dl></figure></section><section><h1>特徴</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proactive negotiation</anchor> は、利用可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>からの選択方法を記述して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>に提示するのが難しい時や、
余分なやり取りなしに最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>で良さげな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を送りたい時には有用です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は必ずしも良さげな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を推定できるとは限りません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>は推測を助けるための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を送ることもできます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>
が、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">画面</anchor>に表示したいのか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">紙</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">印刷</anchor>したいのか、
といった意図まで完全に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が把握できるわけではありません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> また、複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>がある場合が少ないとすると常に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を送るのは非効率ですし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プライバシー</anchor>的なリスクもあります。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を選択するアルゴリズムが複雑になるのも欠点です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> また、共有<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>の利用率も下がります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を送っても、それが尊重されるとは限りません。
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proactive negotiation</anchor> が実装されていないかもしれませんし、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">406</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送るより<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>の希望を満たさない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>を送った方がましと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>が判断するかもしれません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p></section><section><h1>ヘッダー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="407" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[407]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Vary:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proactive negotiation</anchor> に際して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>のどの情報を用いたか示すために使うことがあります
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖駆動折衝</anchor>に使われるものです。<figure class="short list"><ul><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept:</anchor></code></li><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Charset:</anchor></code></li><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding:</anchor></code></li><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language:</anchor></code></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> この他 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">User-Agent:</anchor></code> や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPアドレス</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IP</anchor> によって示されたもののほか、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X-Forwarded-For:</anchor></code>
などの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>によるものも含みます。) が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>に使われることもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> また通常は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>には含めませんが、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TE:</anchor></code>
も同様に機能します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Prefer:</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>のために使うべきではないとされていますが、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Prefer: safe</anchor></code> のように事実上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>のために使われることもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 新たな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>の試みとして、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Client Hints</anchor> が一部で実装されています。</p></section><section><h1>セキュリティー</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">情報<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">能力の記述</title></anchor>を送るということは、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fingerprinting vector</anchor> を提示するものであり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プライバシー</anchor>保護の観点から問題があると考えられています。</p></section><section><h1>歴史</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> RFC 2068・2616 (HTTP/1.1) 12.1 Server-driven Negotiation</figcaption><blockquote><p>If the selection of the best representation for a response is made by
an algorithm located at the server, it is called server-driven
negotiation.  Selection is based on the available representations of
the response (the dimensions over which it can vary; e.g. language,
content-coding, etc.) and the contents of particular header fields in
the request message or on other information pertaining to the request
(such as the network address of the client).</p></blockquote><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の最善の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>の選択が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に位置付けられた算法によって行われる時、
これを<dfn>サーバー駆動折衝</dfn>と呼びます。選択は、
利用可能な応答の表現 (その変化し得る次元、例えば言語、 <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">content-coding</anchor></code> など)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>メッセージ中の特定の頭欄の内容や要求に関係するその他の情報
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>のネットワーク番地など) に基づきます。</p><blockquote><p>Server-driven negotiation is advantageous when the algorithm for
selecting from among the available representations is difficult to
describe to the user agent, or when the server desires to send its
&quot;best guess&quot; to the client along with the first response (hoping to
avoid the round-trip delay of a subsequent request if the &quot;best
guess&quot; is good enough for the user). In order to improve the server's
guess, the user agent MAY include request header fields (Accept,
Accept-Language, Accept-Encoding, etc.) which describe its
preferences for such a response.</p></blockquote><p>サーバー駆動折衝は、利用可能な表現から選択する算法を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>に説明するのが難しい時や、
(「最善の推測」が利用者にとって十分であるときの後続の要求の往復の<ruby>間<rt>ま</rt></ruby>を避けることを願って)
最初の応答で「最善の推測」によるものをクライアントに送ることをサーバーが望む時に有利です。
サーバーの推測を向上させるために、利用者エージェントは応答の選り好みを記述した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求頭欄</anchor>
(<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept</anchor></code>, <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language</anchor></code>, 
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding</anchor></code> など) を含めて<strong>構いません</strong>。</p><blockquote><p>Server-driven negotiation has disadvantages:</p></blockquote><p>サーバー駆動折衝には不利な点もあります。</p><blockquote><ul><li>1. It is impossible for the server to accurately determine what might be
&quot;best&quot; for any given user, since that would require complete
knowledge of both the capabilities of the user agent and the intended
use for the response (e.g., does the user want to view it on screen
or print it on paper?).</li><li>2. Having the user agent describe its capabilities in every request can
be both very inefficient (given that only a small percentage of
responses have multiple representations) and a potential violation of
the user's privacy.</li><li>3. It complicates the implementation of an origin server and the
algorithms for generating responses to a request.</li><li>4. It may limit a public cache's ability to use the same response
for multiple user's requests.</li></ul></blockquote><ul><li>サーバーがその利用者にとって何が「最善」なのかを正確に決定するのは不可能です。
正確に決定するためには利用者エージェントの能力と応答をどう使うつもりか
(例えば利用者が画面で見ることを望んでいるのか、紙に印刷することを望んでいるのか)
の両方についての完全な知識が必要になってしまいます。</li><li>利用者エージェントが毎度の要求でその能力を記述するのは 
(複数の表現を持つ応答がほんのわずかの割合だとしたら) とても非効率ですし、
利用者の個人情報を漏らしてしまう虞もあります。</li><li>起源サーバーの実装と要求に対する応答を生成する算法を複雑化させてしまいます。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開キャッシュ</anchor>が同じ応答を複数の利用者の要求に使える場面を限定してしまうかもしれません。</li></ul><blockquote><p>HTTP/1.1 includes the following request-header fields for enabling
server-driven negotiation through description of user agent
capabilities and user preferences: Accept (section 14.1), Accept-Charset (section 14.2), Accept-Encoding (section 14.3), Accept-Language (section 14.4), and User-Agent (section <del>14.42</del> <ins>14.43</ins>). However, an
origin server is not limited to these dimensions and MAY vary the
response based on any aspect of the request, including information
outside the request-header fields or within extension header fields
not defined by this specification.</p></blockquote><p>HTTP/1.1 は、利用者エージェント能力及び利用者の好みの記述によってサーバー駆動折衝を可能とするための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求頭欄</anchor>として
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept</anchor></code>, <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Charset</anchor></code>,
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding</anchor></code>, <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language</anchor></code>,
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">User-Agent</anchor></code> を含んでいます。
しかし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源サーバー</anchor>はこれらの次元に限定されず、
要求頭欄外の情報やこの仕様書で定義していない拡張頭欄中の情報も含めて、
要求の任意の側面に基づいて応答を変化させて<strong>構いません</strong>。</p><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>HTTP/1.1 origin servers MUST include an appropriate Vary header field
(section 14.43) in any cachable response based on server-driven
negotiation. The Vary header field describes the dimensions over
which the response might vary (i.e. the dimensions over which the
origin server picks its &quot;best guess&quot; response from multiple representations).</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">HTTP/1.1 起源サーバーは、サーバー駆動折衝に基づく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ可能</anchor>な応答に適切な
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Vary</anchor></code> 頭欄を含めなければ<strong>なりません</strong>。
<code class="HTTP">Vary</code> 頭欄は、その応答が変化し得る次元
(すなわち、起源サーバーが複数の表現から「最善の推測」応答を選んだ次元)
を記述します。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>HTTP/1.1 public caches MUST recognize the Vary header field when it
is included in a response and obey the requirements described in
section 13.6 that describes the interactions between caching and
content negotiation.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">HTTP/1.1 公開キャッシュは、 <code class="HTTP">Vary</code> 頭欄が応答中に含まれているときは、
これを認識し、キャッシュと内容折衝の相互作用について説明した13.6節に記述されている要件に従わなければ<strong>なりません</strong>。</p></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>The Vary  header field can be used to express the parameters the
server uses to select a representation that is subject to server-driven negotiation. See section 13.6 for use of the Vary header field
by caches and section 14.44 for use of the Vary header field by servers.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">サーバーが内容折衝の対象である表現を選択するのに使った引数を表現するのに
<code class="HTTP">Vary</code> 頭欄を使うことができます。
キャッシュの <code class="HTTP">Vary</code> 頭欄の利用については13.6節を、
サーバーの <code class="HTTP">Vary</code> 頭欄の使用については 14.44 節をご覧下さい。</p></insert></figure></section></body></html>