<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="313" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[313]</anchor-end> <dfn><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code></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:">HTTP/1.1</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。事実上 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> 専用であり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続の確立</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[311]</anchor-end> <strong><cite xml:lang="en">RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</cite> (<time>2014-06-07 01:59: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/rfc7230#section-6.7">https://tools.ietf.org/html/rfc7230#section-6.7</anchor-external></strong></li><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 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)</cite> (<time>2015-05-15 10:14:54 +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-3.2">https://tools.ietf.org/html/rfc7540#section-3.2</anchor-external></li><li><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 xml:lang="en">RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)</cite> (<time>2015-05-15 10:14:54 +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-8.1.2.2">https://tools.ietf.org/html/rfc7540#section-8.1.2.2</anchor-external></li></ul></refs></section><section><h1>意味</h1><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</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="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</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:">WebSocket</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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の改訂版などより高機能なプロトコルへの切り替えを想定して
「<code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en">Upgrade</code>」という名前にしたのでしょうが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor>
が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の「upgrade」版というわけでもありません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="438" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[438]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> は、下位層プロトコルの切り替えには使えません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。
また、現在の<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="319" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[319]</anchor-end> <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:">リスト</anchor> (<code>#</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</p><figure class="railroad"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor></li><li>*<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">,</anchor></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></ul></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="320" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[320]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>は、名前、または名前と <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">/</anchor></code> と版を並べたものです
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="321" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[321]</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:"><code xmlns="http://www.w3.org/1999/xhtml" class="ABNF" xml:lang="en">protocol</code> (HTTP)</anchor> 
の項を参照してください。</comment-p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="314" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[314]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は、<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に含めることができます
<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="436" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[436]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> を送信しても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が切り替えを示すまでは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor> のままです。 <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
が含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>は最後まで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor> でなければなりません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="316" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[316]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>に対して、
最後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>を送る前に指定したいずれかの<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。
<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="315" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[315]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は複数指定できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="435" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[435]</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/1.1</anchor> で定義されています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.0</anchor> や
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/0.9</anchor> では使えません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> では <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成</anchor>しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor> <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> も使えないことになっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="322" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[322]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>に新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>を表す
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を含めなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="324" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[324]</anchor-end> <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="327" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[327]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">426</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>において
移行可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>を示す <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を送らなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。
<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="428" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[428]</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>を表す
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。
<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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> を指定する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">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:">要求</anchor>でも構いませんし、
途中でも構わないようです。</p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="441" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[441]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に対し、
新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>を選んで、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。ただし、<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="318" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[318]</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="434" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[434]</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/1.0</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を無視しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> で <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></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>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="325" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[325]</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:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="326" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[326]</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="427" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[427]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>は新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>ではなく、
まだ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.1</anchor> のままです。</comment-p><figure class="sequence"><dl><dt>C</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor></dd><dt>S</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor></dd><dt>C -&gt; S</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor><pre class="HTTP code"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor> <var>P</var>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection:</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">upgrade</anchor></pre></dd><dt>S -&gt; C</dt><dd><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor><pre class="HTTP code"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor> <var>P</var>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection:</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">upgrade</anchor></pre></dd><dt>C ## S</dt><dd><var>P</var> に移行</dd></dl></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="437" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[437]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の他に
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Expect:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">100-continue</anchor></code>
が指定されていた場合には、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> の前に <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">100</anchor></code>
を送らなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="432" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[432]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> を送信するときは、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>にも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続オプション</anchor>
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">upgrade</anchor></code> を送信しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="433" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[433]</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><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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 防ぐことはできますが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>の処理と <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
は矛盾するので、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ可能メソッド</anchor>で <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
を使うのは得策ではなさそうです。</comment-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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.0</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/1.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>は、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection:</anchor></code> に <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade</anchor></code>
が明示されているか否かに関わらず、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>があれば削除する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></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="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal></src>。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> では、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> が含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">奇形</anchor>です
<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="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal></src>。</p></section><section><h1>プロトコルの切り替え</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="429" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[429]</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。しかし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送信した直後には、
元の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に対する処理に相当するものを実行することが期待されています <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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、新しい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の意味を尊重できる場合を除き、
切り替えては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</anchor-internal></src>。 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OPTIONS</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>は、どんな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>でも尊重される <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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;311</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="430" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[430]</anchor-end> 例えば <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
が指定されていて、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> を返した場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は新しいプロトコルに切り替えて <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> されていた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>を送るべきです。</p></example><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="431" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[431]</anchor-end> 従って、特に実行したい <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> 操作がなく、プロトコルの切り替えだけを行いたいときは、
<code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OPTIONS</anchor></code> <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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> は <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>を使っていますが、
必ずしも <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に対する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>に相当するものであるとは言えませんし、
この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の本来の想定に沿っているようには見えません。</comment-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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が対応していない <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を受信した場合の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の処理は、<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code>
を参照してください。</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> 切り替えが完了する前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
を含む<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の次のデータを送信することは、明確には禁止されていません。
一方で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>がそれをどう処理するべきかも明確な規定はありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返す前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>によって送信されていたデータがどこまでであるかを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>が判定する方法はありませんから、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は<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-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> <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>
として解釈されることになります。</comment-p></section><section><h1>具体的な切り替え手順</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 現在広く用いられているのは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> です。その手順は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket接続の確立</anchor>を参照してください。</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/2</anchor> は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">h2c</anchor></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>
への切り替えを規定しています。しかしすべての実装が対応しているわけではありません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP接続</anchor>を参照。</comment-p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 過去に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade: TLS</anchor></code> により <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> over <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor>
を実現することを試みましたが、失敗しました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade: TLS</anchor></code> の歴史の項を参照。</comment-p></history><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">h2</anchor></code> が指定されても無視しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></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-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">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:">ALPN</anchor> が使われ、 <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
は使えません。</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> この規定より <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">h2</anchor></code> という値は使えないはずですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IANA登録簿</anchor>には予約としても登録されていないようです。<time xmlns="http://www.w3.org/1999/xhtml">2015-05-18T12:23:38.300Z</time></comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> その他いくつかの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル (HTTP)</anchor>の値が限られた範囲で使われているようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>も切り替え後のプロトコルの動作を把握しておく必要がありますから、
一般性を持たせた実装は困難かもしれません。今後次々と新しいプロトコルが登場する見込みもありませんから
(<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:">ALPN</anchor> を使うことになるでしょう。)、
そのような実装の必要も無さそうです。</p></section><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="312" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[312]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2068</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="309" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[309]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor></li></ul></refs><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="308" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[308]</anchor-end> RFC 2068 (HTTP/1.1) 14.41; RFC 2616 (HTTP/1.1) 14.42 Upgrade</figcaption><blockquote><p>The Upgrade general-header allows the client to specify what
additional communication protocols it supports and would like to use
if the server finds it appropriate to switch protocols. The server
MUST use the Upgrade header field within a 101 (Switching Protocols)
response to indicate which protocol(s) are being switched.</p></blockquote><p><code class="HTTP">Upgrade</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>がプロトコル切替えが適切であると判断した場合には使用したいと考えているのかを指定することができます。
鯖は、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">101</anchor></code> (プロトコル切替) 応答中でどのプロトコルに切り替えるのかを示すために
<code class="HTTP">Upgrade</code> 頭欄を使わなければ<strong>なりません</strong>。</p><blockquote><ul><li>Upgrade        = &quot;Upgrade&quot; &quot;:&quot; 1#product</li></ul></blockquote><blockquote><p>For example,<ul><li>Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11</li></ul></p></blockquote><blockquote><p>The Upgrade header field is intended to provide a simple mechanism
for transition from HTTP/1.1 to some other, incompatible protocol. It
does so by allowing the client to advertise its desire to use another
protocol, such as a later version of HTTP with a higher major version
number, even though the current request has been made using HTTP/1.1.
This eases the difficult transition between incompatible protocols by
allowing the client to initiate a request in the more commonly
supported protocol while indicating to the server that it would like
to use a &quot;better&quot; protocol if available (where &quot;better&quot; is determined
by the server, possibly according to the nature of the method and/or
resource being requested).</p></blockquote><p><code class="HTTP">Upgrade</code> 頭欄は、 HTTP/1.1 から何か他の、非互換なプロトコルに移行するための単純な機構を提供することを想定しています。クライアントは、
現在の要求は HTTP/1.1 を使って行いながらも、例えばより大きな大版番号を持つより新しい版の
HTTP のような、別のプロトコルを使いたいと思っているということを宣伝できます。
これによって、非互換プロトコル間の難しい移行が、
クライアントはより広く対応されているプロトコルで要求を初期化しつつ鯖に「よりよい」
プロトコルを利用可能なら使いたいことを示すことができるので、
容易になります。
(ここで「よりよい」とは、鯖によって、おそらく要求された<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><blockquote><p>The Upgrade header field only applies to switching application-layer
protocols upon the existing transport-layer connection. Upgrade
cannot be used to insist on a protocol change; its acceptance and use
by the server is optional. The capabilities and nature of the
application-layer communication after the protocol change is entirely
dependent upon the new protocol chosen, although the first action
after changing the protocol MUST be a response to the initial HTTP
request containing the Upgrade header field.</p></blockquote><p><code class="HTTP">Upgrade</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>プロトコルの切替にのみ適用します。
<code class="HTTP">Upgrade</code> をプロトコル変更を主張するのに使うことはできません。
鯖がそれを受け入れて使用するかどうかは任意選択です。
プロトコル変更後の応用層通信の能力と性質は選ばれた新しいプロトコルに完全に依存します。
但し、プロトコル変更後の最初の動作は <code class="HTTP">Upgrade</code> 頭欄を含んだ初期
HTTP 要求への応答でなければ<strong>なりません</strong>。</p><blockquote><p>The Upgrade header field only applies to the immediate connection.
Therefore, the upgrade keyword MUST be supplied within a Connection
header field (section 14.10) whenever Upgrade is present in an
HTTP/1.1 message.</p></blockquote><p><code class="HTTP">Upgrade</code> 頭欄は、直接接続にのみ適用します。
従って、 <code class="HTTP">Upgrade</code> が HTTP/1.1 メッセージ中に存在するときには、
必ず <code class="HTTP">upgrade</code> 見出し語を <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection</anchor></code> 頭欄中に供給しなければ<strong>なりません</strong>。</p><blockquote><p>The Upgrade header field cannot be used to indicate a switch to a
protocol on a different connection. For that purpose, it is more
appropriate to use a 301, 302, 303, or 305 redirection response.</p></blockquote><p><code class="HTTP">Upgrade</code> 頭欄は、異なる接続上のプロトコルへの切替えを示すために使うことはできません。
その目的には、 <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">301</anchor></code>, <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">302</anchor></code>,
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">303</anchor></code> または <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">305</anchor></code> の再指向応答を使うのがより適切です。</p><blockquote><p>This specification only defines the protocol name &quot;HTTP&quot; for use by
the family of Hypertext Transfer Protocols, as defined by the HTTP
version rules of section 3.1 and future updates to this
specification. Any token can be used as a protocol name; however, it
will only be useful if both the client and server associate the name with the same protocol.</p></blockquote><p>この仕様書は、プロトコル名 <code class="HTTP">HTTP</code> だけを、
ハイパー文転送プロトコルで使用するために、
3.1節の版規則とこの仕様書の将来の更新で定義される通り定義します。
任意の字句をプロトコル名として使うことができます。
しかし、それはクライアントと鯖がある名前を同じプロトコルと関連付けている場合に限って有用です。</p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2817</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> over <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> への切り替えに
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS/1.0</anchor></code> を使うことを提案していました <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="307" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;307</anchor-internal></src>
(が普及しませんでした)。</p><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="307" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[307]</anchor-end> <cite xml:lang="en">RFC 2817 - Upgrading to TLS Within HTTP/1.1</cite> (<time>2012-01-09 20:05: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="http://tools.ietf.org/html/rfc2817">http://tools.ietf.org/html/rfc2817</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="443" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[443]</anchor-end> <cite xml:lang="en">RFC 3507 - Internet Content Adaptation Protocol (ICAP)</cite>
( (<time>2014-06-08 07:17:07 +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://tools.ietf.org/html/rfc3507#page-13">http://tools.ietf.org/html/rfc3507#page-13</anchor-external></p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="442" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[442]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RTSP</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP</anchor> には、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code> はありません。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor>の切り替えを伴わない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>からの要望を伝えるものとして、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Expect:</anchor></code>、<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Prefer:</anchor></code>、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept:</anchor></code> などにたような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>が他にもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONNECT</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求メソッド</anchor>は、実質的に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor>
を終了させて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トンネル</anchor>に移行するものですが、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor></code>
は使っていません。</p><figure class="quote"><figcaption><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> <cite>GDAX | API Reference</cite>
(<time>2016-08-11 04:02:30 +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://docs.gdax.com/#sandbox-urls">https://docs.gdax.com/#sandbox-urls</anchor-external></figcaption><blockquote><p>FIX API</p><p>https://fix-public.sandbox.gdax.com</p><p>NOTE ON FIX API</p><p>request.end();</p><p>When connecting to the FIX API in Sandbox, you must start with an HTTP Upgrade request and set the Upgrade header to fix. After receiving a 101 Switching Protocols response from the server, you may continue using the connection as a regular FIX connection. Remember to use HTTPS for this.</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">58745 – H2Upgrade do not works</cite>
( (<time>2017-03-27 21:41: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://bz.apache.org/bugzilla/show_bug.cgi?id=58745">https://bz.apache.org/bugzilla/show_bug.cgi?id=58745</anchor-external></figcaption><blockquote><p>Upgrade: h2,h2c</p><p>Connection: Upgrade</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">Handling server replies with &quot;Upgrade&quot; header (HTTP/2 switch) · Issue #81 · jech/polipo</cite>
( (<time>2017-03-27 21:41:53 +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/jech/polipo/issues/81">https://github.com/jech/polipo/issues/81</anchor-external></figcaption><blockquote><p>Server: Apache/2.4.18 (Unix)</p><p>X-Powered-By: PHP/5.6.15</p><p>Vary: Accept-Encoding,Cookie</p><p>Cache-Control: max-age=3, must-revalidate</p><p>WP-Super-Cache: Served supercache file from PHP</p><p>Upgrade: h2,h2c</p></blockquote></figure><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:">Apache</anchor> は <code>Upgrade: h2c</code> に対応しているから、それは良いとして、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Upgrade:</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">h2</anchor></code> は何だろう。。。</p><p><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> <cite xml:lang="en">HTTP/2 | 2020 | The Web Almanac by HTTP Archive</cite>
(<time>2021-04-24T09:26:21.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#upgrade">https://almanac.httparchive.org/en/2020/http2#upgrade</anchor-external></p></section></body></html>