<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="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の<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">alternative service</rt></rubyb></dfn>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</anchor> への切り替えなどに用いられています。</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite xml:lang="en">RFC 7838 - HTTP Alternative Services</cite> (<time>2016-04-17 23:25:39 +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/rfc7838">https://tools.ietf.org/html/rfc7838</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> <cite xml:lang="en">RFC 7838 - HTTP Alternative Services</cite> (<time>2016-04-17 23:25:39 +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/rfc7838#section-3">https://tools.ietf.org/html/rfc7838#section-3</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> <cite xml:lang="en">RFC 7838 - HTTP Alternative Services</cite> (<time>2016-04-17 23:25:39 +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/rfc7838#section-4">https://tools.ietf.org/html/rfc7838#section-4</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> <cite xml:lang="en">RFC 7838 - HTTP Alternative Services</cite> (<time>2016-04-17 23:25:39 +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/rfc7838#section-9.4">https://tools.ietf.org/html/rfc7838#section-9.4</anchor-external></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> <cite xml:lang="en">RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)</cite> (<time>2016-04-13 23:55:13 +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/rfc7540#section-4.1">https://tools.ietf.org/html/rfc7540#section-4.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> <cite>Hypertext Transfer Protocol (HTTP) Alt-Svc Parameter Registry</cite> (<time>2016-04-09 05:02:19 +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://www.iana.org/assignments/http-alt-svc-parameters/http-alt-svc-parameters.xhtml">https://www.iana.org/assignments/http-alt-svc-parameters/http-alt-svc-parameters.xhtml</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> <cite xml:lang="en">RFC 8164 - Opportunistic Security for HTTP/2</cite> (<time>2017-05-11 15:47:35 +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/rfc8164#section-4.3">https://tools.ietf.org/html/rfc8164#section-4.3</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> <cite xml:lang="en">RFC 8164 - Opportunistic Security for HTTP/2</cite> (<time>2017-05-11 15:47:35 +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/rfc8164#section-4.5">https://tools.ietf.org/html/rfc8164#section-4.5</anchor-external></li></ul></refs></section><section><h1>代替サービス</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> 普通 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>へのアクセスは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</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><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">alternative service</rt></rubyb></dfn>と言っています。
より正確には、ある<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>が利用可能であるといいます <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</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>があるときに、
他の<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</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:">HTTP/2</anchor> など新しいプロトコルや、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</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:">SNI</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</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:">ALPNプロトコル名</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><section><h1>発見</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</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>できます。<figure class="middle list"><ul><li><code>Alt-Svc:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPヘッダー</anchor></li><li><code>ALTSVC</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2フレーム</title></anchor></li></ul></figure></p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 元々 <code class="HTTP" xml:lang="en">Alternate-Protocol:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>が使われていましたが、
例によって <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準化</anchor>された際に改称・非互換変更され、
<code>Alt-Svc:</code> となりました。</p></history><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</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>として使います。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></section><section><h1>代替サービスキャッシュ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</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>群を保持します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>は、次の状態を持ちます。<figure class="list members"><dl><dt><dfn><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><rubyb><anchor>新鮮寿命</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">freshness lifetime</rt></rubyb></f></dfn></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> <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</dd><dt><f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">persist</code></f></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></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</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>が変化した時、
<code>persist</code> フラグの値が <code>1</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>から削除する<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。
これは、<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</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>から
<code class="HTTP">421</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>から削除しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</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>も消去しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;109</anchor-internal></src>。</p></section><section><h1>利用</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</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>で、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>を使う<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>。
<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</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:">fingerprinting vector</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="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;109</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>情報を提供するかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</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:">Clear Site Data</title></anchor>に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>の情報も消去しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;118</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opportunistic Security for HTTP/2</anchor> 
の独自の規定ですが、本来<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>一般に適用するべきものと思われます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</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>経由で接続する<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD> <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</title></anchor>の確立を待たずに既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</title></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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opportunistic HTTP/2 Security</anchor> もこれを明示的に認めています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</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:">HTTP接続</title></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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</title></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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> ただし、これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">downgrade attack</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>への接続の失敗とみなしては<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。 <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> 例えば <code>h2<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2</title></code> を使おうとしたのに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPN</anchor> で <code>h2<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2</title></code>
が選べなかった場合は、フォールバックしてはなりません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</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:">URL</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>に影響せず、
接続先の決定とプロトコルの選択のみに関わるものです。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPリダイレクト</anchor>とは異なります。
特に、<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">service identity</anchor> の検証では、
元の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>を使わなければなりません。 <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNI</anchor> では、元の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>を使わなければなりません。 <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en">Host:</code> には、
元の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>や<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポート</f>を使わなければなりません。
<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></li></ul></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</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><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</comment-p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opportunistic HTTP/2 Security</anchor> により <code class="URI" xml:lang="en">http:</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> で送信される場合、 <code>:scheme</code>
の値は <code>http<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">http:</title></code> となります。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</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:">HTTP要求</anchor>には、 <code>Alt-Used:</code>
<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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">必須ではないようです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</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:">authoritative</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</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>と等価に扱われるようです。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">この点、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロキシ</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ミラーサーバー</anchor>とは異なります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</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>全体の制御下にあり、妥当であることの<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十分な保証<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">reasonable assurances</rt></rubyb></dfn>を有しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
ここでいう「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十分な保証</anchor>」は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPSサーバー認証</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>が <code>www.example.com</code> のとき、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>が <code>other.example.com</code> で<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</f>が
<code>h2<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2</title></code> (= <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> over <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor>) なら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>が <code>www.example.com</code>
で有効かどうかを検証することで、
十分な保証があるとみなすことができます。しかし<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</f>が <code>h2c</code>
(= <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> over <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opportunistic HTTP/2 Security</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPSサーバー認証</anchor>を
「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十分な保証</anchor>」としていますが、その上で追加の検査も規定しています。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</f>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を使う場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNI</anchor> に対応していなければ、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>を使っては<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> なぜか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNI</anchor> を使わなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ならない</MUST>とはされていませんが、
普通に考えれば、<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名</anchor>の場合、使わなければならないはずです
(そうでなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>ではありません)。<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPアドレス</anchor>なら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SNI</anchor> は使えません。</comment-p></section></section><section><h1>プロトコル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> 次のものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>で利用されています。<figure class="short list"><ul><li><code class="HTTP" xml:lang="en">Alt-Svc:</code><ul><li><code class="HTTP" xml:lang="en">ma=&quot;&quot;</code></li><li><code class="HTTP" xml:lang="en">persist=&quot;&quot;</code></li></ul></li><li><code class="HTTP" xml:lang="en">ALTSVC</code></li><li><code class="HTTP" xml:lang="en">Alt-Used:</code></li><li><code class="HTTP">421</code></li></ul></figure></p></section><section><h1><code class="HTTP" xml:lang="en">Alt-Svc:</code> ヘッダー</h1><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <code class="HTTP" xml:lang="en">Alt-Svc:</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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <code class="HTTP" xml:lang="en">Alt-Svc:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値は、
<code>clear</code> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>) または1つ<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:">リスト (HTTP)</title></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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> 複数の値がある場合、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">優先度<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">preference</rt></rubyb>を表しており、
最初の値が最も好ましいものです。 <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><figure class="railroad"><ol><li>|<ol><li><code>clear</code></li><li>=<ol><li>値</li><li>*<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li><code>,</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li>値</li></ol></li></ol></li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> 値は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPNプロトコル名</anchor>、<code>=</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>の後に、
0個<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:">引数 (HTTP)</title></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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><figure class="railroad"><ol><li>プロトコル名</li><li><code>=</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor>および<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポート</anchor></li><li>引数群</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPNプロトコル名</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>%</code> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>を使わなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
それ以外は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>しては<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。 <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">これは、単純な<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><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</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>は区別されます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</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:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor>、<code>:</code>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</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>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</f>を表します。 <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><figure class="railroad"><ol><li>?<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor></li></ol></li><li><code>:</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポート</anchor></li></ol></figure><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> でよく見かける<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホストとポート</anchor>の構文とは省略できる部分が違っています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor>、<code>=</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:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>の前には区切りの <code>;</code> が必要です。 <code>;</code>
の前後には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><figure class="railroad"><ol><li>*<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li><code>;</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor></li><li><code>=</code></li><li>|<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引用文字列</anchor></li></ol></li></ol></li></ol></figure></section><section><h1>引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <figure class="short list"><ul><li><code class="HTTP" xml:lang="en">ma</code></li><li><code class="HTTP" xml:lang="en">persist</code></li><li><code class="HTTP" xml:lang="en">v<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></code></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> 未知の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>は、無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</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>の区別の有無は不明です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> 同名の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>が複数ある場合の扱いは不明です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>の順序は意味を持たないと思われますが、明記されていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IANA登録簿</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="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;107</anchor-internal></src>。
登録と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合性</anchor>の関係は不明です。</p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。
ただし <code class="HTTP">421</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="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> でも使えますが、 <code>ALTSVC</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2フレーム</title></anchor>を使う<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD>
<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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。
なお本<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値の部分は、 <code>ALTSVC</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2フレーム</title></anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Alt-Svc欄値</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="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</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>が設定できないようにする<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD> <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="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;132</anchor-internal></src>。</p></section><section><h1><code>clear</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <code>clear</code> は、<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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p></section><section><h1><code class="HTTP" xml:lang="en">ma</code> 引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> <code>Alt-Svc</code> により記述された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">新鮮寿命</f>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成</anchor>から24時間です <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。
<code>ma</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>数です <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> <code class="HTTP" xml:lang="en">ma</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>です <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>自体の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">新鮮寿命</f>とは関係しません。従って<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>はその<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">新鮮寿命</f>まで有効です。</comment-p></section><section><h1><code class="HTTP" xml:lang="en">persist</code> 引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <code class="HTTP" xml:lang="en">persist</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>の値 <code>1</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>を表します。
<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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</anchor-end> 他の値は指定されても無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p></section><section><h1><code class="HTTP" xml:lang="en">v<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></code> 引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</anchor> 対応に当たり <code class="HTTP" xml:lang="en">v<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を使っています。</p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <code class="HTTP">421</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>では、無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> <code class="HTTP" xml:lang="en">Alt-Svc:</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>を無効化します <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="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;61</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</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>が指定されていれば、
それらは同時に有効になると思われます。</comment-p></section></section><section><h1><code>ALTSVC</code> フレーム (HTTP/2)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <code>ALTSVC</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2フレーム</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>するものです。</p><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム識別子</anchor>が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> <em>以外</em>なら、
当該<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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム識別子</anchor>が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> なら、
<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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム型</anchor>は、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">10</n> (<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0xA</n>) です <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。 0 でなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;95</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>は無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;95</anchor-internal></src>。</p><figure class="packet"><dl><dt>width</dt><dd>8</dd></dl><ol><li>1 0</li><li>1 0</li><li>1 0</li><li>1 0</li><li>1 0</li><li>1 0</li><li>1 0</li><li>1 0</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">payload</anchor> は、次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">欄</anchor>で構成されます。<figure class="list members"><dl><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源長<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Origin-Len</rt></rubyb></dfn></dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</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:">符号無し16ビット整数</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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src></dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Origin</rt></rubyb></dfn></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>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII直列化</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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src></dd><dt><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Alt-Svc欄値<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Alt-Svc-Field-Value</rt></rubyb></dfn></dt><dd>
<code class="HTTP" xml:lang="en">Alt-Svc:</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:">payload</anchor> のうち<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:">ALTSVC</title></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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src></dd></dl></figure></p><figure class="packet"><dl><dt>width</dt><dd>32</dd></dl><ol><li>16 起源長</li><li>16... 起源</li><li>32... Alt-Svc欄値</li></ol></figure></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</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>に送ることができます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <code>ALTSVC</code> と <code class="HTTP" xml:lang="en">Alt-Svc:</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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src></p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <code>ALTSVC</code> に対応しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エンドポイント<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2エンドポイント</title></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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、受信しても無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム識別子</anchor>が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></anchor>が空なら、無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム識別子</anchor>が <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> <em>以外</em>で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></anchor>が空でなければ、無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</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:">接続<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP接続</title></anchor>において
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">authoritative</anchor> でないと判断するなら、
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>を無視しなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">ALTSVC</title></anchor>欄の値が正しい <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII直列化</anchor>でない場合にどう処理するべきなのかは明らかではありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">authoritative</anchor> でないと判断して無視するのが適切でしょうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</anchor-end> <code>ALTSVC</code> の受信は、意味的には、
<code class="HTTP" xml:lang="en">Alt-Svc:</code> <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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> <code>ALTSVC</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">HTTP/2フレーム</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>しては<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
ただし、受信した <code>ALTSVC</code> をもとに新たに <code>ALTSVC</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="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;86</anchor-internal></src></p></section></section><section><h1>用法</h1><section><h1>QUIC</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</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="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</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:">ALPNプロトコル名</anchor> <code>quic</code>
を指定することで、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</anchor> を使うための接続先を指定できます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SPDY</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> との使い分けはどちらも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> over <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</anchor>
ベースなので <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPN</anchor> で可能でしたが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</anchor> すら使わないので、
一旦従来の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1</anchor> または <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> で接続してから、
利用可能であることを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替サービス</anchor>として明示する必要があります。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> 以外が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QUIC</anchor> を実装するのかどうか、実装するとしたらいつになるのかは、
現時点では不透明です。</comment-p></section><section><h1>日和見暗号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opportunistic HTTP/2 Security</anchor> では、
本来<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素のHTTP</anchor>を使う <code class="URI" xml:lang="en">http:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
へのアクセスであっても、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</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="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> が実装しています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> 本来の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> ほど安全ではない中途半端な解法であるにも関わらず
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> への移行を阻害するおそれがあるとしてあまり支持されていません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mozilla</anchor> 以外は実装しないとみられています。</comment-p></section><section><h1>プッシュサービス</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>プッシュサービス</anchor> </sw-see></p></section><section><h1>その他</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</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="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</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>にアクセスさせたいときに使えることを主要な用途の1つに挙げています。
しかし、<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="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> 理論上は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> への切り替えなど他の手法が既に確立している場面でも本手法を利用できますが、
その必要はなさそうですし、実装が新たにそうした形で対応することもないかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> いずれにせよ、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</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>に問題があり、実質的には使うことはできない状態です。</p></section></section><section><h1>歴史</h1><section><h1><code class="HTTP" xml:lang="en">Alternate-Protocol:</code> ヘッダー</h1><p><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> <cite>SPDY Protocol - Draft 2 - The Chromium Projects</cite>
( (<time>2013-10-19 15:06:10 +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="http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Server-Advertisement-of-SPDY-through-the-HTTP-Alternate-Protocol-header">http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Server-Advertisement-of-SPDY-through-the-HTTP-Alternate-Protocol-header</anchor-external></p><p><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>Re: Add QUIC to Alternate-Protocol support. (issue 12156005) - Google グループ</cite>
( (<time>2013-10-20 06:22:12 +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://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/NhzeGXtLCOA">https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/NhzeGXtLCOA</anchor-external></p><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> <cite>Actually enable Alternate-Protocol support for QUIC. (issue 17410014) - Google グループ</cite>
( (<time>2013-10-20 06:22:43 +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://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/y2RjueIsQbM">https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/y2RjueIsQbM</anchor-external></p><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> </p><blockquote><pre class="HTTP code">HTTP/1.1 304 Not Modified
X-GData-User-Country: JP
Date: Sun, 20 Oct 2013 06:20:16 GMT
Server: GSE
Alternate-Protocol: 80:quic
</pre></blockquote><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> <cite>SPDY Protocol - Draft 2 - The Chromium Projects</cite>
( (<time>2014-11-01 00:36:56 +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="http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Server-Advertisement-of-SPDY-through-the-HTTP-Alternate-Protocol-header">http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Server-Advertisement-of-SPDY-through-the-HTTP-Alternate-Protocol-header</anchor-external></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> <pre class="HTTP example code">Alternate-Protocol: 80:quic,p=0.01</pre></p><figure class="quote"><figcaption><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> <cite>QUIC FAQ - The Chromium Projects</cite>
(<time>2016-04-16 07:05:17 +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://www.chromium.org/quic/quic-faq">https://www.chromium.org/quic/quic-faq</anchor-external></figcaption><blockquote><p>How do I aim Chrome at the test server?</p><p>If you have an HTTP server, you'll need it to emit a response header that looks like:</p><p>Alternate-Protocol: quic:&lt;QUIC server port&gt;</p></blockquote></figure><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> <cite>Issue 1720163002: When Alt-Svc header processing is enabled, do not process Alternate-Protocol - Code Review</cite>
(<time>2016-04-18 00:42:12 +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://codereview.chromium.org/1720163002/">https://codereview.chromium.org/1720163002/</anchor-external></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> <cite xml:lang="en">698362 – Decide what to do regarding Alternate-Protocol vs redirects</cite>
(<time>2016-04-18 17:03: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://bugzilla.mozilla.org/show_bug.cgi?id=698362">https://bugzilla.mozilla.org/show_bug.cgi?id=698362</anchor-external></p></section><section><h1><code class="HTTP" xml:lang="en">Alt-Svc:</code> ヘッダー</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> <cite xml:lang="en">HTTP Alternative Services</cite>
( (<time>2014-07-24 13:19:57 +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://httpwg.github.io/http-extensions/alt-svc.html">https://httpwg.github.io/http-extensions/alt-svc.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite xml:lang="en">Certificate verification bypass through the HTTP/2 Alt-Svc header — Mozilla</cite>
(<time>2015-04-04 05:00:27 +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://www.mozilla.org/en-US/security/advisories/mfsa2015-44/">https://www.mozilla.org/en-US/security/advisories/mfsa2015-44/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <cite>Bits Up!: Opportunistic Encryption For Firefox</cite>
(<time>2015-04-06 16:35:05 +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="http://bitsup.blogspot.jp/2015/03/opportunistic-encryption-for-firefox.html">http://bitsup.blogspot.jp/2015/03/opportunistic-encryption-for-firefox.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <cite>Mozilla Dials Back on Firefox Opportunistic Encryption</cite>
(<time>2015-06-18 11:58:10 +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="http://www.eweek.com/security/mozilla-dials-back-on-firefox-opportunistic-encryption.html">http://www.eweek.com/security/mozilla-dials-back-on-firefox-opportunistic-encryption.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <cite xml:lang="en">Certificate verification bypass through the HTTP/2 Alt-Svc header — Mozilla</cite>
(<time>2015-04-04 05:00:27 +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://www.mozilla.org/en-US/security/advisories/mfsa2015-44/">https://www.mozilla.org/en-US/security/advisories/mfsa2015-44/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <cite xml:lang="en">draft-ietf-httpbis-alt-svc-07 - HTTP Alternative Services</cite>
(<time>2015-05-21 10:26:13 +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/draft-ietf-httpbis-alt-svc-07">https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-07</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <cite xml:lang="en">1003448 – http/2 alt-svc support</cite>
(<time>2015-06-18 11:59:58 +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://bugzilla.mozilla.org/show_bug.cgi?id=1003448">https://bugzilla.mozilla.org/show_bug.cgi?id=1003448</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <cite xml:lang="en">1113790 – pref change to true for network.http.altsvc.enabled and altsvc.oe</cite>
(<time>2015-06-18 12:00:13 +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://bugzilla.mozilla.org/show_bug.cgi?id=1113790">https://bugzilla.mozilla.org/show_bug.cgi?id=1113790</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <cite xml:lang="en">HTTP Alternative Services</cite>
(<time>2015-05-30 15:33:33 +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="http://http2.github.io/http2-spec/alt-svc.html">http://http2.github.io/http2-spec/alt-svc.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <cite>Issue 438263 - chromium - Update HTTP/2 AltSvc frame wire format - An open-source project to help move the web forward. - Google Project Hosting</cite>
(<time>2015-06-18 12:04:09 +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://code.google.com/p/chromium/issues/detail?id=438263">https://code.google.com/p/chromium/issues/detail?id=438263</anchor-external></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> <cite>Issue 392575 - chromium - Implement the Alt-Svc spec - An open-source project to help move the web forward. - Google Project Hosting</cite>
(<time>2015-06-18 12:04:58 +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://code.google.com/p/chromium/issues/detail?id=392575">https://code.google.com/p/chromium/issues/detail?id=392575</anchor-external></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> <cite xml:lang="en">Issue 585876 - chromium - QUIC connections to &quot;remote&quot; Alt-Svcs should use the origin hostname in the SNI field - Monorail</cite>
(<time>2016-04-18 00:10:27 +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://bugs.chromium.org/p/chromium/issues/detail?id=585876">https://bugs.chromium.org/p/chromium/issues/detail?id=585876</anchor-external></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> <cite>Issue 1720163002: When Alt-Svc header processing is enabled, do not process Alternate-Protocol - Code Review</cite>
(<time>2016-04-18 00:42:21 +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://codereview.chromium.org/1720163002/">https://codereview.chromium.org/1720163002/</anchor-external></p><figure class="quote"><figcaption><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> <cite xml:lang="ja">YouTube</cite>
(<time>2016-04-18 00:49:55 +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://www.youtube.com/">https://www.youtube.com/</anchor-external></figcaption><blockquote><p>alt-svc:quic=&quot;:443&quot;; ma=2592000; v=&quot;32,31,30,29,28,27,26,25&quot;</p><p>alternate-protocol:443:quic</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="ja">Google</cite>
(<time>2016-04-18 00:50:55 +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://www.google.co.jp/">https://www.google.co.jp/</anchor-external></figcaption><blockquote><p>alt-svc:quic=&quot;:443&quot;; ma=2592000; v=&quot;32,31,30,29,28,27,26,25&quot;</p><p>alternate-protocol:443:quic</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <cite xml:lang="en">Implement ALT-SVC · Issue #535 · nghttp2/nghttp2</cite>
(<time>2016-04-18 17:19:51 +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://github.com/nghttp2/nghttp2/issues/535">https://github.com/nghttp2/nghttp2/issues/535</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> <cite xml:lang="en-US">mozilla-central: changeset 313435:7078c20114e2</cite>
(<time>2017-05-11 15:56:57 +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://hg.mozilla.org/mozilla-central/rev/7078c20114e2">https://hg.mozilla.org/mozilla-central/rev/7078c20114e2</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">YouTube</anchor> <time>2020-03-25T01:38:39.700Z</time></p><pre class="HTTP code">Alt-Svc: quic=&quot;:443&quot;; ma=2592000; v=&quot;46,43&quot;,h3-Q050=&quot;:443&quot;; ma=2592000,h3-Q049=&quot;:443&quot;; ma=2592000,h3-Q048=&quot;:443&quot;; ma=2592000,h3-Q046=&quot;:443&quot;; ma=2592000,h3-Q043=&quot;:443&quot;; ma=2592000,h3-T050=&quot;:443&quot;; ma=2592000</pre><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> <cite xml:lang="en">draft-bishop-httpbis-sni-altsvc-02 - The &quot;SNI&quot; Alt-Svc Parameter</cite>
(<time>2020-11-08T14:13:40.000Z</time>, <time>2020-11-18T10:00:07.075Z</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/draft-bishop-httpbis-sni-altsvc-02">https://tools.ietf.org/html/draft-bishop-httpbis-sni-altsvc-02</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> <time>2020-11-30T03:05:54.200Z</time></p><blockquote><pre class="HTTP code">Alt-Svc: h3-29=&quot;:443&quot;; ma=2592000,h3-T051=&quot;:443&quot;; ma=2592000,h3-Q050=&quot;:443&quot;; ma=2592000,h3-Q046=&quot;:443&quot;; ma=2592000,h3-Q043=&quot;:443&quot;; ma=2592000,quic=&quot;:443&quot;; ma=2592000; v=&quot;46,43&quot;</pre></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> <time>2021-04-30T02:25:31.900Z</time></p><blockquote><pre class="HTTP code">Alt-Svc: h3-29=&quot;:443&quot;; ma=2592000,h3-T051=&quot;:443&quot;; ma=2592000,h3-Q050=&quot;:443&quot;; ma=2592000,h3-Q046=&quot;:443&quot;; ma=2592000,h3-Q043=&quot;:443&quot;; ma=2592000,quic=&quot;:443&quot;; ma=2592000; v=&quot;46,43&quot;</pre></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> <cite xml:lang="en">HTTP/2 | 2020 | The Web Almanac by HTTP Archive</cite>
(<time>2021-04-24T09:26:30.000Z</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://almanac.httparchive.org/en/2020/http2#alternative-services">https://almanac.httparchive.org/en/2020/http2#alternative-services</anchor-external></p></section></section></body></html>