<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="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <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">message</rt></rubyb></dfn>は、 <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><p><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:">要求メッセージ</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答メッセージ</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <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-3">https://tools.ietf.org/html/rfc7230#section-3</anchor-external><ul><li><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> <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-3.4">https://tools.ietf.org/html/rfc7230#section-3.4</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="514" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[514]</anchor-end> <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-3.5">https://tools.ietf.org/html/rfc7230#section-3.5</anchor-external></li></ul></li><li><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 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-2.5">https://tools.ietf.org/html/rfc7230#section-2.5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="517" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[517]</anchor-end> <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-8.3.1">https://tools.ietf.org/html/rfc7230#section-8.3.1</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2052" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2052]</anchor-end> <cite xml:lang="en">RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</cite> (<time>2014-06-07 01:55:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7231#section-4.3.8">https://tools.ietf.org/html/rfc7231#section-4.3.8</anchor-external></li><li><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> <cite xml:lang="en">RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0</cite> (<time>2014-09-07 13:12:32 +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/rfc1945#section-6.1">http://tools.ietf.org/html/rfc1945#section-6.1</anchor-external></li><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>UPnP Device Architecture 2.0</cite> (<time>2014-09-05 02:24:48 +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://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v2.0.pdf#page=23">http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v2.0.pdf#page=23</anchor-external></li><li><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> <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">https://tools.ietf.org/html/rfc7540#section-8.1</anchor-external></li></ul></refs></section><section><h1>テキスト形式メッセージ (HTTP/0.9, HTTP/1.0, HTTP/1.1)</h1><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:">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:">RFC 822</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/0.9</anchor> はそれよりも更に単純な形式でした。</p><section><h1>構文</h1><p><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:">開始行</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>の3つの部分で構成されます
<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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</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:">HTTP/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>には、
<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="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:">CRLF</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal></src> ただし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/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="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:">ヘッダー</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:">CRLF</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</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:">CRLF</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:">CRLF</anchor>) とあわせて、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> と2回連続することになります。
なお <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/0.9</anchor> ではこの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> は存在しません。</p><p><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:">メッセージ本体</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/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="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>は省略できますが、
いつでも省略できるわけではなく、他の色々な条件で制約されています。</comment-p><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:">HTTP/1.x</anchor> では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ本体</anchor>がなくても、区切りの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</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="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:">HTTP/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>となります。</comment-p><figure class="railroad"><ol><li>|<ol><li>=<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開始行</anchor></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:">CRLF</anchor></li></ol></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor></li><li>?<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ本体</anchor></li></ol></li></ol></li><li>HTTP/0.9 要求<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開始行</anchor></li></ol></li><li>HTTP/0.9 応答<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ本体</anchor></li></ol></li></ol></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="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</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="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:">SSDP</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="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="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:">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>して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">漸進的処理</anchor>に供したり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下流</anchor>へ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送</anchor>したりできます。しかし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実装</anchor>によっては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バッファリング</anchor>したり遅延させたりして調整したり何らかの処理を行ったりすることがありますから、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">漸進的</anchor>に受信できることに依存できません。 <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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</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="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:">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>の間の<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:">Web互換</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:">HTTPメッセージ</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">US-ASCII</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:"><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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal></src></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:">HTTPメッセージ</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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal></src>。<figure class="steps"><ol><li><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>を読んで構造を解釈します。</li><li><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>に達するまで各<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>に入れます。</li><li><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>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム</anchor>として読みます。</li></ol></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="513" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[513]</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:">CRLF</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="514" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;514</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:">HTTP接続</anchor>も参照。</comment-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>と最初の<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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal></src>。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開始行</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の間に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor>があれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>を<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="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</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="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>をそのままにすることは禁止されています。</comment-p><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>の項も参照してください。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="516" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[516]</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:">鯖</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"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">400</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="514" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;514</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:">Apache</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:">:</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:">400</anchor></code>
を返します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor> は無視するようです。 <time>2014-10-24T06:04:05.600Z</time></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="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">400</anchor></code> を返す方が良さそうに思えます。</comment-p><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>は、<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>不完全</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">incomplete</rt></rubyb>なことがあります。
詳しくは<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="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</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:">要求</anchor>に対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP/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 body</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.0</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/0.9</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>のほとんどは <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">text/html</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="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;58</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:">HTTP/0.9</anchor> も参照。</comment-p><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:">ヘッダー部</anchor>が不完全な場合 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態行</anchor>の途中で終わっていた場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>がない場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空行</anchor>がない場合) には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>が閉じられたところまでについて通常通り処理が行われるようです。
ただし、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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:">IE</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</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:">Firefox</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークエラー</anchor>とみなし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> はその前の行までだけ処理します (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> はその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>まで含めて処理します)。
<time>2015-08-12T14:32:47.700Z</time></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> の場合、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</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:">Firefox</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> と同じくエラーにはしません。 <time>2015-09-12T14:26:03.400Z</time></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:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー部</anchor>の途中での <code>RST</code>
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークエラー</anchor>とします。 <time>2016-07-17T12:51:02.200Z</time></p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求本体</anchor>が <code class="HTTP" xml:lang="en">Content-Length:</code> に満たずに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>が閉じられると、
<code>400</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor> は通常通り処理を続けます。
<time>2016-09-09T09:14:41.400Z</time></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor> は継続行の処理がおかしく、ネットワークからのデータの到着のタイミングによっても結果が変わったりするようです。
<time>2016-09-10T13:07:19.500Z</time></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:">Apache</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</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>を含めて
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8192</n> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>以下でなければ <code>400</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</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>で
<n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8192</n> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>以下でなければ <code>400</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor> は継続行を含めた検査を行わないように見えます。
<time>2016-09-11T06:41:34.000Z</time></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求ヘッダー</anchor>を <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">100</n> 個まで受け付け、それを超えると
<code>400</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor> は <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8438</n> 個まで受け付け、それを超えると
<code>400</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。 <time>2016-09-11T06:59:19.700Z</time></p></section><section><h1>改行</h1><p><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:">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>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> です。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</anchor> 単体や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> 単体ではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="515" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[515]</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:">CRLF</anchor> について、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>とみなし、直前に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</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="514" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;514</anchor-internal></src>。</p><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:">nginx</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> も、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">改行</anchor>とみなし、直前の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</anchor>
を無視するようです。 <time>2015-06-14T10:26:26.300Z</time></p><ul><li><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:">HTTP</anchor> メッセージの頭の改行は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> で<strong>なければなりません</strong>が、 <code>Server: Fujitsu-InfoProvider-Pro/V12L10 (UXP/DS)</code> というサーバーは <code>LF</code> で出力します。 Mozilla や WinIE を含めた多くの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UA</anchor> はこれでも扱えるようですが、問題が出ることもあるみたいです。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> 例えば: <em>Libraries of Kanazawa City</em> <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.lib.kanazawa.ishikawa.jp/">http://www.lib.kanazawa.ishikawa.jp/</anchor-external></li><li><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>-2 互換モードを作って対応するとしたら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>s によると応答の最初の行には単独の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> が含まれることはありませんから、もし出現したら buggy UA という方向で...</li></ul><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:">W3C</anchor> の古い記述 (<em>Note: Client tolerance of bad HTTP servers</em> 
<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.w3.org/Protocols/HTTP/OldServers.html">http://www.w3.org/Protocols/HTTP/OldServers.html</anchor-external>)
は、クライアントは改行を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> と考えて、その前の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CR</anchor>
を無視しなさい、と言っています。</p><p>まあ [HTTP92] でも改行は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> と規定しているのですが...</p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> もっと昔の TimBL が (たぶん) 最初に書いた仕様書には LF で、 CR を無視と書いてありましたです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end>
もっとも、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal> は今で言う <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="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> herokuapp.com のサーバー (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Cowboy</anchor>?) は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LF</anchor> のみの要求を正しく扱えず、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">505</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返します。 <time>2015-09-06T15:41:22.900Z</time></p></section></section><section><h1>バイナリー形式メッセージ (HTTP/2)</h1><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:">メッセージ</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="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPメッセージ</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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;66</anchor-internal></src>。<figure class="list"><ol><li><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>の場合、0個<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:">1xx</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>:<ol><li><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> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li><li><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> 0個<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li></ol></li><li><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:">メッセージ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor><ol><li><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> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li><li><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> 0個<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li></ol></li><li><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:">payload body</anchor><ol><li><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> 0個<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li></ol></li><li><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:">trailer</anchor> (省略可能)<ol><li><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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li><li><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> 0個<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor></li></ol></li></ol></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="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:">HTTP/1.1</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以下</anchor>とは違って、 <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1xx</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>内に入れ子に含まれる定義になっています。</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="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>の<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:">HEADERS</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:">PUSH_PROMISE</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:">PUSH_PROMISE</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:">CONTINUATION</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>で送信されます。</comment-p><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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>と <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>の間や <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</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:"><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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;66</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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> か <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</anchor></code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>は、 
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">END_STREAM</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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;66</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> <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTINUATION</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>は <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">END_STREAM</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>が存在せず、その直前の <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code>
<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="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</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>が2つ連続することになります。</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 class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1xx</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の後 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</anchor></code>
を受信したらどうするべきかは定かではありません。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">200</anchor></code> として扱うようです。 (逆に仕様通り
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1xx</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の後に次の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code>
が現れると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリームエラー</anchor> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PROTOCOL_ERROR</anchor></code> とします。)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を受信したら接続を閉じます。
<time>2015-10-11T10:01:10.700Z</time></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:">payload body</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:">DATA</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:">payload body</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:">DATA</anchor></code> <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:"><code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Length</anchor></code> の項も参照。</comment-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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も、長さ0の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DATA</anchor></code> はエラーとはしません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は長さが非0でもエラーにせず、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHR</anchor> からアクセスできます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は長さが非0だと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリームエラー</anchor> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CANCEL</anchor></code>
とします。<time>2015-10-11T10:08:32.400Z</time></p><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:">Chrome</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">trailer</anchor> に対応していないようで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリームエラー</anchor> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PROTOCOL_ERROR</anchor></code> とします。
<time>2015-10-11T10:15:49.200Z</time></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:">trailer</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">header block</anchor> に <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">END_STREAM</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:">header block</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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;66</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> 最終的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態符号</anchor>を受信した後に <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">END_STREAM</anchor></code>
が設定されていない <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</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:"><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="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;66</anchor-internal></src>。</p><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:">Firefox</anchor> はその場合<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続エラー</anchor> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PROTOCOL_ERROR</anchor></code>
とするようです。 <time>2015-10-11T10:14:49.200Z</time></p><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:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">END_STREAM</anchor></code> より前に
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GOAWAY</anchor></code> を受信しても、エラーとはしないで接続を閉じる
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NO_ERROR</anchor></code> の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GOAWAY</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>とします。 <time>2015-10-12T03:57:40.200Z</time></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>が<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><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code> を受信した時どうしたらいいのかは定かではありません。</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>を送信していない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ストリーム</anchor>で <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEADERS</anchor></code>
を受信した時、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続エラー</anchor> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PROTOCOL_ERROR</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>とするようです。
<time>2015-10-03T12:00:02.900Z</time></p><p><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> <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="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> <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="2053" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2053]</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:">HTTP接続</anchor>の項を参照してください。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2054" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2054]</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>の項を参照してください。</p></section><section><h1>適合性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">送信者</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</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:"><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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="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:">ABNF</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成規則</anchor>の中には <code xmlns="http://www.w3.org/1999/xhtml" class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">obs-</anchor></code> から始まるものがありますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5322</anchor> とは違って <code xmlns="http://www.w3.org/1999/xhtml" class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">obs-</anchor></code> から始まるとしてもただちに<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="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:">送信者</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:"><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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">送信者</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>は、その役割に適用され、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</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:"><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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="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:">受信者</anchor>がすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル要素</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>を義務付けられているわけではありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>など<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>一般の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>を行って名前と値の組として認識はするでしょうが、
個々の値まで更に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>はしないで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送</anchor>してしまいます。</p></example><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> <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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></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> ただし<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="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:">内容符号化</anchor>の実装を誤っているとわかっており、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">User-Agent:</anchor></code> から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>がその実装であると推測できるときは、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding:</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src></p></example><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPのエラー処理</anchor>も参照してください。</p></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> ほとんどの<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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> <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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</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="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:">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:">要求URL</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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal></src>。</p></example></section><section><h1>MIME 型</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="519" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[519]</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:">MIME型</anchor>はありませんが、
近い型は2つあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="520" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[520]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/http</anchor></code> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求メッセージ</anchor>の列、
または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答メッセージ</anchor>の列を表します。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">詳しくは <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/http</anchor></code> を参照してください。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="521" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[521]</anchor-end> <dfn><code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code></dfn> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPメッセージ</anchor>1つを表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>ですが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor>
の <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/*</anchor></code> の制限が課される他、
いくつかの要件が本来の<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="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:">HTTP/2</anchor> を扱えるのかは不明です。</p><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="528" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[528]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TRACE</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="2052" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2052</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="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:">S-HTTP</anchor> でも <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> を使うと規定されていました <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;60</anchor-internal></src> が、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">S-HTTP</anchor> 自体が普及しませんでした。<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="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> <cite xml:lang="en">RFC 2660 - The Secure HyperText Transfer Protocol</cite> (<time>2014-11-09 14:12:37 +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/rfc2660#section-2.4.2">http://tools.ietf.org/html/rfc2660#section-2.4.2</anchor-external></li></ul></refs></comment-p></section><section><h1>引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="529" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[529]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> には省略可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>が2つ定義されています <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="517" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;517</anchor-internal></src>。<figure class="list"><ul><li><code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">version</anchor></code></li><li><code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">msgtype</anchor></code></li></ul></figure></p></section><section><h1>CTE</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="526" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[526]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CTE</anchor> としては、 <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">7bit</anchor></code>, <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8bit</anchor></code>,
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">binary</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="517" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;517</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="527" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[527]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5335</anchor> によりこの制限は <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/*</anchor></code> 一般には撤廃されていますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7230</anchor> でも <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> に対しては引き続き課されているようです。</comment-p></section><section><h1>処理モデル</h1><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> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> をどのように処理するべきかは規定されていません。
唯一使われる場面が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TRACE</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>用だからか特に処理は規定されていません。</p></section><section><h1>本体</h1><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:">HTTPメッセージ</anchor>です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="524" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[524]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> の<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:">MIME</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="517" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;517</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="525" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[525]</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:">MIME</anchor>を使うプロトコルではなく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor>の側に <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/*</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>宣言ってあるのでしょうか?</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="530" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[530]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> の<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><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="531" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[531]</anchor-end> なぜ敢えて例外規定を設けてまで、どれだけ実態があるかわからない
<code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</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:">TRACE</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メール</anchor>ではありません。</comment-p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="522" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[522]</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:">RFC 822</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>の類似性から、必然的に
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> と <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/rfc822</anchor></code>
はよく似ています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="523" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[523]</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:">CTE</anchor>
は <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">binary</anchor></code> です。<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">7bit</anchor></code> や
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8bit</anchor></code> の旧来の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SMTP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NNTP</anchor>
の如き<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転送路</anchor>では転送することができません。他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>であれば
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Base64</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Quoted-Printable</anchor> のような <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CTE</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>するべきところですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> の規定により、 <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/<var xmlns="http://www.w3.org/1999/xhtml">*</var></anchor></code>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>は一切禁止されているので、仕様に従いつつ転送する術はありません。
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message/http</anchor></code> の代わりに <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/http</anchor></code>
として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">札付け</anchor>することでこの制約を回避できます。</p></section></section><section><h1>API</h1><figure class="short list"><figcaption><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:">HTTPメッセージ</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PSR-7</anchor></li><li><code>Request</code> / <code>Response</code></li></ul></figure></section><section><h1>歴史</h1><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1945</anchor> 1.2, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2068</anchor> 1.3, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> 1.3)</figcaption><blockquote><dl><dt>message</dt><dd>The basic unit of HTTP communication, consisting of a structured   sequence of octets matching the syntax defined in <del><ins>{1945</ins>] Section</del> <ins>section</ins>
4 and transmitted via the connection.</dd></dl></blockquote><dl><dt>メッセージ</dt><dd>HTTP 通信の基本単位で、第4章で定義する構文に一致する構造化オクテット列から成り、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接続</anchor>を介して転送される。</dd></dl></figure><figure class="quote"><figcaption><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> RFC 1945 4.1  Message Types</figcaption><p>HTTP messages consist of requests from client to server and responses
from server to client.</p><p>HTTP メッセージは顧客からサーバーへの要求とサーバーから顧客への応答
から構成されます。</p><pre>       HTTP-message   = Simple-Request           ; HTTP/0.9 messages
                      | Simple-Response
                      | Full-Request             ; HTTP/1.0 messages
                      | Full-Response</pre><pre>   Full-Request and Full-Response use the generic message format of RFC
   822 [7] for transferring entities. Both messages may include optional
   header fields (also known as &quot;headers&quot;) and an entity body. The
   entity body is separated from the headers by a null line (i.e., a
   line with nothing preceding the CRLF).</pre><p>Full-Request と Full-Response は実体の転送に RFC 822
の一般メッセージ形式を使います。両メッセージは省略可能な頭欄
(「頭達」とも呼ばれる) と実体本文を含んでも構いません。
実体本文は頭達と空行 (つまり CRLF の前に何も無い行)
で区切ります。</p><pre>       Full-Request   = Request-Line             ; Section 5.1
                        *( General-Header        ; Section 4.3
                         | Request-Header        ; Section 5.2
                         | Entity-Header )       ; Section 7.1
                        CRLF
                        [ Entity-Body ]          ; Section 7.2</pre><pre>       Full-Response  = Status-Line              ; Section 6.1
                        *( General-Header        ; Section 4.3
                         | Response-Header       ; Section 6.2
                         | Entity-Header )       ; Section 7.1
                        CRLF
                        [ Entity-Body ]          ; Section 7.2</pre><p>Simple-Request and Simple-Response do not allow the use of any header
information and are limited to a single request method (GET).</p><p>Simple-Request と Simple-Response はいかなる頭情報の使用も
認められませんし、単一要求方式 (GET) に制限されます。</p><pre>       Simple-Request  = &quot;GET&quot; SP Request-URI CRLF</pre><pre>       Simple-Response = [ Entity-Body ]</pre><p>Use of the Simple-Request format is discouraged because it prevents
the server from identifying the media type of the returned entity.</p><p>Simple-Request 形式の使用は非推奨です。
この形式では返される実体の媒体型を識別できないからです。</p></figure><figure><figcaption><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> RFC 2616 4.1 Message Types</figcaption><p>HTTP messages consist of requests from client to server and responses
from server to client.</p><p>HTTP メッセージは顧客からサーバーへの要求とサーバーから顧客への
応答で構成されます。</p><pre>       HTTP-message   = Request | Response     ; HTTP/1.1 messages</pre><pre>   Request (section 5) and Response (section 6) messages use the generic
   message format of RFC 822 [9] for transferring entities (the payload
   of the message). Both types of message consist of a start-line, zero
   or more header fields (also known as &quot;headers&quot;), an empty line (i.e.,
   a line with nothing preceding the CRLF) indicating the end of the
   header fields, and possibly a message-body.</pre><p>Request, Response 両メッセージは実体 (メッセージの弾頭)
の転送に RFC 822 の一般メッセージ形式を使います。両メッセージ型は
star-line, 0個以上の頭欄 (「頭達」とも呼ばれる), 頭欄の終わりを示す空行
(つまり CRLF の前に何も無い行), それとあれば message-body から構成されます。</p><pre>        generic-message = start-line
                          *(message-header CRLF)
                          CRLF
                          [ message-body ]
        start-line      = Request-Line | Status-Line</pre><pre>   In the interest of robustness, servers SHOULD ignore any empty
   line(s) received where a Request-Line is expected. In other words, if
   the server is reading the protocol stream at the beginning of a
   message and receives a CRLF first, it should ignore the CRLF.</pre><p>頑強性の点から、サーバーは Request-Line が来るはずのところで
受け取った空行を無視するべきです。他の言葉でいえば、サーバーが
メッセージの始めのプロトコル列を読んで最初に CRLF を受け取ったなら、
その CRLF は無視するべきです。</p><pre>   Certain buggy HTTP/1.0 client implementations generate extra CRLF's
   after a POST request. To restate what is explicitly forbidden by the
   BNF, an HTTP/1.1 client MUST NOT preface or follow a request with an
   extra CRLF.</pre><p>イかれた HTTP/1.0 の顧客実装は余計な CRLF 達を POST
要求の後に生成します。 BNF で明示的に禁止されていることを
繰り返しますが、 HTTP/1.1 顧客は要求の前や後に余計な
CRLF をつけては<strong>いけません</strong>。</p></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="518" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[518]</anchor-end> RFC 1945 (HTTP/1.0) A.; RFC 2068 (HTTP/1.1) 19.1 Internet Media Type message/http, RFC 2616 (HTTP/1.1) 19.1 Internet Media Type message/http and application/http</figcaption><blockquote><p>In addition to defining the <del><ins>{1945}</ins> HTTP/1.0</del> <ins>HTTP/1.1</ins> protocol, this document serves
as the specification for the Internet media type &quot;message/http&quot; <ins><ins>{2616}</ins> and &quot;application/http&quot;</ins>. <ins><ins>{2616}</ins> The message/http type can be used to enclose a single HTTP request or response message, provided that it obeys the MIME restrictions for all &quot;message&quot; types regarding line length and encodings. The application/http type can be used to enclose a pipeline of one or more HTTP request or response messages (not intermixed).</ins> The
following is to be registered with IANA <del><ins>{1945}</ins> [13] </del> <ins><ins>{2616}</ins> [17] </ins>.</p></blockquote><p>この文書は、 HTTP プロトコルを定義するのに加えて、インターネット<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体型</anchor>
<code class="MIME">message/http</code> <ins>および <code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/http</anchor></code></ins>
の仕様を給仕します。<ins><code class="MIME">message/http</code> 型は、単一の HTTP 要求メッセージまたは応答メッセージを、すべての <code class="MIME">message</code> 型についての行長と符号化に関する MIME の制限に従うものとして囲むために使うことができます。 <code class="HTTP">application/http</code> 型は、一つ以上の HTTP 要求メッセージ群または応答メッセージ群 (非混合。) のパイプ線を囲むために使うことができます。</ins>
次は、 IANA に登録されます。</p><blockquote><dl><dt>Media Type name</dt><dd>message</dd><dt>Media subtype name</dt><dd>http</dd><dt>Required parameters</dt><dd>none</dd><dt>Optional parameters</dt><dd>version, msgtype</dd></dl></blockquote><blockquote><dl><dt>version</dt><dd>The HTTP-Version number of the enclosed message
(e.g., <del><ins>{1945}</ins> &quot;1.0&quot;</del> <ins>&quot;1.1&quot;</ins>). If not present, the version can be
determined from the first line of the body.</dd></dl></blockquote><p>囲まれたメッセージの <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP-Version</anchor></code> 番号
(例えば <code class="HTTP">1.0</code> や <code class="HTTP">1.1</code>。)
存在しなければ、版は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>の最初の行から決定できます。</p><blockquote><dl><dt>msgtype</dt><dd>The message type -- &quot;request&quot; or &quot;response&quot;. If not
present, the type can be determined from the first
line of the body.</dd></dl></blockquote><p>メッセージ型 — <code class="MIME">request</code> 又は <code class="MIME">response</code>。
存在しなければ、型は本体の最初の行から決定できます。</p><blockquote><dl><dt>Encoding considerations</dt><dd>only &quot;7bit&quot;, &quot;8bit&quot;, or &quot;binary&quot; are permitted</dd><dt>Security considerations</dt><dd>none</dd></dl></blockquote><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{2616}</ins><dl><dt>Media Type name</dt><dd>application</dd><dt>Media subtype name</dt><dd>http</dd><dt>Required parameters</dt><dd>none</dd><dt>Optional parameters</dt><dd>version, msgtype</dd></dl></p></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><dl><dt>version</dt><dd>The HTTP-Version number of the enclosed messages
(e.g., &quot;1.1&quot;). If not present, the version can be
determined from the first line of the body.</dd></dl></blockquote><p xmlns="http://www.w3.org/1999/xhtml">囲まれたメッセージの <code class="ABNF">HTTP-Version</code> 番号
(例えば <code class="HTTP">1.1</code>。)
存在しなければ、版は本体の最初の行から決定できます。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><dl><dt>msgtype</dt><dd>The message type -- &quot;request&quot; or &quot;response&quot;. If not
present, the type can be determined from the first line of the body.</dd></dl></blockquote><p xmlns="http://www.w3.org/1999/xhtml">メッセージ型 — <code class="MIME">request</code> 又は <code class="MIME">response</code>。
存在しなければ、型は本体の最初の行から決定できます。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><dl><dt>Encoding considerations</dt><dd>HTTP messages enclosed by this type
are in &quot;binary&quot; format; use of an appropriate
Content-Transfer-Encoding is required when
transmitted via E-mail.</dd></dl></blockquote><p xmlns="http://www.w3.org/1999/xhtml">この型で囲まれた HTTP メッセージは <code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">binary</anchor></code> 書式です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メイル</anchor>を介して転送するときには適切な <code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Transfer-Encoding</anchor></code>
が必要です。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><dl><dt>Security considerations</dt><dd>none</dd></dl></blockquote></insert></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2048" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2048]</anchor-end> RFC 1945 (HTTP/1.0) 4.; RFC 2068・2616 (HTTP/1.1) 4 HTTP Message</figcaption><section><h1>4.1 Message Types</h1><blockquote><p>HTTP messages consist of requests from client to server and responses
from server to client.</p></blockquote><p><dfn>HTTP メッセージ</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>から成ります。</p><blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><pre>       HTTP-message   = Simple-Request           ; HTTP/0.9 messages
                      | Simple-Response
                      | Full-Request             ; HTTP/1.0 messages
                      | Full-Response</pre></li></ul></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>HTTP-message   = Request | Response     ; HTTP/1.1 messages</li></ul></insert></blockquote><blockquote><p><del>Full-Request</del> <ins>Request (section 5)</ins> and <del>Full-Response</del> <ins>Response (section 6) messages</ins> use the generic message format of RFC 822 <del> [7] </del> <ins> [9] </ins>
for transferring entities <ins>(the payload of the message)</ins>. <del>Both messages may include optional header fields (also known as &quot;headers&quot;) and an entity body. The entity body is separated from the headers by a null line (i.e., a line with nothing preceding the CRLF).</del> <ins>Both types of message consist of a start-line, <del>one</del> <ins>zero</ins> or more header fields (also known as &quot;headers&quot;), an empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields, and <del>an optional</del> <ins>possibly a</ins> message-body.</ins></p></blockquote><p>(完全)要求メッセージと(完全)応答メッセージは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor> <ins>(メッセージの積荷)</ins> 
を転送するために <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC822</anchor> の一般メッセージ書式を使います。
メッセージのどちらの型も、 <code class="ABNF">start-line</code> (開始行)、<del>一つ</del><ins>零個</ins>以上の<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>とも)、頭欄並びの終わりを示す空行 (つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> の前に何も無い行)、
それにもしかすると <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message-body</anchor></code> (メッセージ本体)
から成ります。</p><blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><pre>       Full-Request   = Request-Line             ; Section 5.1
                        *( General-Header        ; Section 4.3
                         | Request-Header        ; Section 5.2
                         | Entity-Header )       ; Section 7.1
                        CRLF
                        [ Entity-Body ]          ; Section 7.2</pre></li><li><pre>       Full-Response  = Status-Line              ; Section 6.1
                        *( General-Header        ; Section 4.3
                         | Response-Header       ; Section 6.2
                         | Entity-Header )       ; Section 7.1
                        CRLF
                        [ Entity-Body ]          ; Section 7.2</pre></li></ul></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><pre>           generic-message = start-line
                             <del>*message-header</del>
                             <ins>*(message-header CRLF)</ins>
                             CRLF
                             [ message-body ]</pre></li><li>start-line      = Request-Line | Status-Line</li></ul></insert></blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Simple-Request and Simple-Response do not allow the use of any header
information and are limited to a single request method (GET).</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml"><code class="ABNF">Simple-Request</code> (単純要求) と <code class="ABNF">Simple-Response</code>
は頭情報の使用を認めず、要求方式も1つ (<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code>)
に限定します。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li>Simple-Request  = &quot;GET&quot; SP Request-URI CRLF</li></ul><ul><li>Simple-Response = [ Entity-Body ]</li></ul></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Use of the Simple-Request format is discouraged because it prevents
the server from identifying the media type of the returned entity.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml"><code class="HTTP">Simple-Request</code> 書式は、サーバーから返される実体の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体型</anchor>を識別することができませんから、
その使用は非推奨とします。</p></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>In the interest of robustness, servers SHOULD ignore any empty
line(s) received where a Request-Line is expected. In other words, if
the server is reading the protocol stream at the beginning of a
message and receives a CRLF first, it should ignore the CRLF.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">頑強性の観点から、サーバーは <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Request-Line</anchor></code>
が期待されるところで受取った空行(並び)を無視する<strong>べきです</strong>。
言い換えると、サーバーがメッセージのはじめでプロトコル流を読んでいて最初に
CRLF を受取ったら、この CRLF は無視するべきです。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><del>Note: certain</del> <ins>Certain</ins> buggy HTTP/1.0 client implementations generate <del>an</del>
extra CRLF's after a POST request. To restate what is explicitly
forbidden by the BNF, an HTTP/1.1 client <del>must not</del> <ins>MUST NOT</ins> preface or follow
a request with an extra CRLF.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">ある蝕まれた HTTP/1.0 クライアント実装は <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">POST</anchor></code>
要求の後に余分な CRLF を生成します。 BNF で陽に禁止されていることを繰り返しますが、
HTTP/1.1 クライアントは要求の前や後に余分な CRLF を入れては<strong>いけません</strong>。</p></insert><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml">注: 追加・削除は 1945→2068 のもの。追加中の追加・削除は
2068→2616 のもの。</p></insert></section><section><h1>4.2 Message Headers</h1><p>→<code class="WikiPage"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP//頭欄</anchor></code></p></section><section><h1>RFC 2068・2616 4.3 Message Body</h1><p>→<code class="WikiPage"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">message-body</anchor></code></p></section><section><h1>RFC 2068・2616 4.4 Message Length</h1><p>→<code class="WikiPage"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Length</anchor></code></p></section><section><h1>RFC 1945 4.3; RFC 2068・2616 4.5 General Header Fields</h1><p>→<code class="WikiPage"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般頭欄</anchor></code></p></section></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2049" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2049]</anchor-end> RFC 1945 (HTTP/1.0); RFC 2068・2616 (HTTP/1.1) 2.2 Basic Rules</figcaption><blockquote><p>The following rules are used throughout this specification to
describe basic parsing constructs. The US-ASCII coded character set
is defined by <del><ins>{1945}</ins> [17] </del> <ins><ins>{2068,2616}</ins> ANSI X3.4-1986 [21] </ins>.</p></blockquote><p>次の規則はこの仕様書を通じて基本解析構造体を記述するために使用します。
US-ASCII 符号化文字集合は ANSI X 3.4‐1986 で定義されています。</p><blockquote><ul><li>OCTET          = &lt;any 8-bit sequence of data&gt;</li><li>CHAR           = &lt;any US-ASCII character (octets 0 - 127)&gt;</li><li>UPALPHA        = &lt;any US-ASCII uppercase letter &quot;A&quot;..&quot;Z&quot;&gt;</li><li>LOALPHA        = &lt;any US-ASCII lowercase letter &quot;a&quot;..&quot;z&quot;&gt;</li><li>ALPHA          = UPALPHA | LOALPHA</li><li>DIGIT          = &lt;any US-ASCII digit &quot;0&quot;..&quot;9&quot;&gt;</li><li>CTL            = &lt;any US-ASCII control character (octets 0 - 31) and DEL (127)&gt;</li><li>CR             = &lt;US-ASCII CR, carriage return (13)&gt;</li><li>LF             = &lt;US-ASCII LF, linefeed (10)&gt;</li><li>SP             = &lt;US-ASCII SP, space (32)&gt;</li><li>HT             = &lt;US-ASCII HT, horizontal-tab (9)&gt;</li><li>&lt;&quot;&gt;            = &lt;US-ASCII double-quote mark (34)&gt;</li></ul></blockquote><blockquote><p><del>HTTP/1.0</del> <ins>HTTP/1.1</ins> defines the <del><ins>{1945}</ins> octet</del>
sequence CR LF as the end-of-line marker for all protocol elements except 
the <del><ins>{1945}</ins> Entity-Body</del> <ins>entity-body</ins> (see <del><ins>{1945}</ins> Appendix B</del> <ins>appendix 19.3</ins> for tolerant applications). The end-of-line marker within an <del><ins>{1945}</ins> Entity-Body</del> <ins>entity-body</ins>
is defined by its associated media type, as described in <del><ins>{1945}</ins> Section 3.6</del> <ins>section 3.7</ins>.</p></blockquote><p>HTTP は実体本体を除くすべてのプロトコル要素で列
CR LF を行末の<ruby>印<rt>しるし</rt></ruby>と定義します。
実体本体中の行末の印はその関連付けられた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体型</anchor>により定義されます。</p><blockquote><ul><li>CRLF           = CR LF</li></ul></blockquote><blockquote><p><del>HTTP/1.0</del> <ins>HTTP/1.1</ins> <del><ins>{1945,2068}</ins> headers</del> <ins><ins>{2616}</ins> header field values</ins> <del><ins>{1945}</ins> may</del> <ins>can</ins> be folded onto multiple lines if <del><ins>{1945}</ins> each</del> <ins>the</ins>
continuation line begins with a space or horizontal tab. All 
linear <del><ins>{1945}</ins> whitespace</del> <ins>white space</ins>, including folding, has the same semantics as SP. <ins><ins>{2616}</ins> A recipient MAY replace any linear white space with a single SP before interpreting the field value or forwarding the message downstream.</ins></p></blockquote><p>HTTP 頭<ins>欄値</ins>は、続く行が間隔又は水平タブで始まるのであれば複数行に折畳むことができます。
すべての線形空白は、折畳みも含み、 <code class="ABNF">SP</code>
と同じ意味を持ちます。<ins>受信者は、欄値を解釈したり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下流</anchor>にメッセージを転送する前に任意の線形空白を単一の <code class="ABNF">SP</code> に置換しても<strong>構いません</strong>。</ins></p><blockquote><ul><li>LWS            = [CRLF] 1*( SP | HT )</li></ul></blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{1945}</ins> However, folding of header lines is not expected by some
applications, and should not be generated by HTTP/1.0 applications.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">しかし、頭行の折畳みを予期していない応用もありますので、
HTTP/1.0 応用は生成するべきではありません。</p></delete><blockquote><p>The TEXT rule is only used for descriptive field contents and values
that are not intended to be interpreted by the message parser. Words
of *TEXT <del><ins>{1945,2068}</ins> may</del> <ins><ins>{2616}</ins> MAY</ins> contain <del><ins>{1945}</ins> octets</del> <ins>characters</ins> from character sets other than <del><ins>{1945}</ins> US-ASCII</del> <ins><ins>{2068,2616}</ins> <del>ISO 8859-1</del> <ins>ISO-8859-1</ins> [22] only when encoded according to the rules of RFC <del>1522</del> <ins>2047</ins> [14] </ins>.</p></blockquote><p><code class="ABNF">TEXT</code> 規則は記述的欄内容とメッセージ解析器に解釈されることを意図しない値にのみ使います。
<code class="ABNF">*TEXT</code> の語は <del>US-ASCII</del> <ins>RFC 2047 の規則に従って符号化するときのみ ISO-8859-1</ins>
以外の文字集合の<del>オクテット</del><ins>文字</ins>を含んでも<strong>構いません</strong>。</p><blockquote><ul><li>TEXT           = &lt;any OCTET except CTLs, but including LWS&gt;</li></ul></blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{1945}</ins> Recipients of header field TEXT containing octets outside the US-ASCII
character set may assume that they represent ISO-8859-1 characters.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">US-ASCII 文字集合の外のオクテットを含んだ頭欄 <code class="ABNF">TEXT</code> の受信者は、
それが ISO-8859-1 文字を表現するものと仮定しても構いません。</p></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{2616}</ins> A CRLF is allowed in the definition of TEXT only as part of a header
field continuation. It is expected that the folding LWS will be
replaced with a single SP before interpretation of the TEXT value.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml"><code class="ABNF">CRLF</code> は、 <code class="ABNF">TEXT</code> の定義の中では、
頭欄継続の一部としてのみ認められています。
折畳み <code class="ABNF">LWS</code> は <code class="ABNF">TEXT</code> 値の解釈の前に単一の
<code class="ABNF">SP</code> に置換されることを意図定しています。</p></insert><blockquote><p>Hexadecimal numeric characters are used in several protocol elements.</p></blockquote><p>十六進数文字は幾つかのプロトコル要素で使います。</p><blockquote><ul><li>HEX            = &quot;A&quot; | &quot;B&quot; | &quot;C&quot; | &quot;D&quot; | &quot;E&quot; | &quot;F&quot; | &quot;a&quot; | &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;f&quot; | DIGIT</li></ul></blockquote><blockquote><p>Many <del>HTTP/1.0</del> <ins>HTTP/1.1</ins> header field values consist of words separated by LWS
or special characters. These special characters <del><ins>{1945}</ins> must</del> <ins>MUST</ins> be in a quoted
string to be used within a parameter value <ins><ins>{2616}</ins> (as defined in section 3.6)</ins>.</p></blockquote><p>多くの HTTP 頭欄値は、 <code class="ABNF">LWS</code> または特殊文字で分離される語で構成されます。
特殊文字は引数値中で使うためには引用文字列中にいれなければ<strong>なりません</strong>。</p><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{1945}</ins> <ul><li>word           = token | quoted-string</li></ul></p></blockquote></delete><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{1945,2068}</ins> <ul><li>token          = 1*&lt;any CHAR except CTLs or tspecials&gt;</li><li>tspecials      = &quot;(&quot; | &quot;)&quot; | &quot;&lt;&quot; | &quot;&gt;&quot; | &quot;@&quot; | &quot;,&quot; | &quot;;&quot; | &quot;:&quot; | &quot;\&quot; | &lt;&quot;&gt; | &quot;/&quot; | &quot;[&quot; | &quot;]&quot; | &quot;?&quot; | &quot;=&quot; | &quot;{&quot; | &quot;}&quot; | SP | HT</li></ul></p></blockquote></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{2616}</ins> <ul><li>token          = 1*&lt;any CHAR except CTLs or separators&gt;</li><li>separators     = &quot;(&quot; | &quot;)&quot; | &quot;&lt;&quot; | &quot;&gt;&quot; | &quot;@&quot; | &quot;,&quot; | &quot;;&quot; | &quot;:&quot; | &quot;\&quot; | &lt;&quot;&gt; | &quot;/&quot; | &quot;[&quot; | &quot;]&quot; | &quot;?&quot; | &quot;=&quot; | &quot;{&quot; | &quot;}&quot; | SP | HT</li></ul></p></blockquote></insert><blockquote><p>Comments <del><ins>{1945}</ins> may</del> <ins>can</ins> be included in some HTTP header fields by surrounding
the comment text with parentheses. Comments are only allowed in
fields containing &quot;comment&quot; as part of their field value definition.
In all other fields, parentheses are considered part of the field value.</p></blockquote><p>注釈は、注釈文を括弧で囲むことで幾つかの HTTP 頭欄中に含めることができます。
注釈は、欄値定義の一部に <code class="ABNF">comment</code> を含んでいる欄でのみ認められます。
他のすべての欄では、括弧は欄値の一部とみなされます。</p><blockquote><ul><li><del><ins>{1945,2068}</ins> comment        = &quot;(&quot; *( ctext | comment ) &quot;)&quot;</del></li><li><ins><ins>{2616}</ins> comment        = &quot;(&quot; *( ctext | quoted-pair | comment ) &quot;)&quot;</ins></li><li>ctext          = &lt;any TEXT excluding &quot;(&quot; and &quot;)&quot;&gt;</li></ul></blockquote><blockquote><p>A string of text is parsed as a single word if it is quoted using
double-quote marks.</p></blockquote><p>二重引用符を使って引用されている文字列は単一の語として解析します。</p><blockquote><ul><li><del><ins>{1945,2068}</ins> quoted-string  = ( &lt;&quot;&gt; *(qdtext) &lt;&quot;&gt; )</del></li><li><ins><ins>{2616}</ins> quoted-string  = ( &lt;&quot;&gt; *(qdtext | quoted-pair ) &lt;&quot;&gt; )</ins></li><li><del><ins>{1945}</ins> qdtext         = &lt;any CHAR except &lt;&quot;&gt; and CTLs, but including LWS&gt;</del></li><li><ins><ins>{2068,2616}</ins> qdtext         = &lt;any TEXT except &lt;&quot;&gt;&gt;</ins></li></ul></blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{1945}</ins> Single-character quoting using the backslash (&quot;\&quot;) character is not
permitted in HTTP/1.0.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">HTTP/1.0 では逆斜線 (<code class="char">\</code>) 文字を使った単一文字引用は認められていません。</p></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{2068,2616}</ins> The backslash character (&quot;\&quot;) <del>may</del> <ins>MAY</ins> be used as a single-character quoting
mechanism only within quoted-string and comment constructs.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">逆斜線文字 (<code class="HTTP">\</code>) は、 <code class="ABNF">quoted-string</code> 構造体および
<code class="ABNF">comment</code> 構造体の中でのみ、
単一文字引用機構として使って<strong>構いません</strong>。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li>quoted-pair    = &quot;\&quot; CHAR</li></ul></blockquote></insert></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2050" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2050]</anchor-end> RFC 2326 (RTSP/1.0) 15 Syntax</figcaption><blockquote><p>The RTSP syntax is described in an augmented Backus-Naur form (BNF)
as used in RFC 2068 [2].</p></blockquote><section><h1>15.1 Base Syntax</h1><blockquote><pre>   OCTET              =      &lt;any 8-bit sequence of data&gt;
   CHAR               =      &lt;any US-ASCII character (octets 0 - 127)&gt;
   UPALPHA            =      &lt;any US-ASCII uppercase letter &quot;A&quot;..&quot;Z&quot;&gt;
   LOALPHA            =      &lt;any US-ASCII lowercase letter &quot;a&quot;..&quot;z&quot;&gt;
   ALPHA              =      UPALPHA | LOALPHA
&gt;
   DIGIT              =      &lt;any US-ASCII digit &quot;0&quot;..&quot;9&quot;&gt;
   CTL                =      &lt;any US-ASCII control character
                              (octets 0 - 31) and DEL (127)&gt;
   CR                 =      &lt;US-ASCII CR, carriage return (13)&gt;
   LF                 =      &lt;US-ASCII LF, linefeed (10)&gt;
&gt;
   SP                 =      &lt;US-ASCII SP, space (32)&gt;
   HT                 =      &lt;US-ASCII HT, horizontal-tab (9)&gt;
   &lt;&quot;&gt;                =      &lt;US-ASCII double-quote mark (34)&gt;
   CRLF               =      CR LF
   LWS                =      [CRLF] 1*( SP | HT )
   TEXT               =      &lt;any OCTET except CTLs&gt;
   tspecials          =      &quot;(&quot; | &quot;)&quot; | &quot;&lt;&quot; | &quot;&gt;&quot; | &quot;@&quot;
                      |       &quot;,&quot; | &quot;;&quot; | &quot;:&quot; | &quot;\&quot; | &lt;&quot;&gt;
                      |       &quot;/&quot; | &quot;[&quot; | &quot;]&quot; | &quot;?&quot; | &quot;=&quot;
                      |       &quot;{&quot; | &quot;}&quot; | SP | HT
&gt;
   token              =      1*&lt;any CHAR except CTLs or tspecials&gt;
   quoted-string      =      ( &lt;&quot;&gt; *(qdtext) &lt;&quot;&gt; )
   qdtext             =      &lt;any TEXT except &lt;&quot;&gt;&gt;
   quoted-pair        =      &quot;\&quot; CHAR
&gt;
   message-header     =      field-name &quot;:&quot; [ field-value ] CRLF
   field-name         =      token
   field-value        =      *( field-content | LWS )
   field-content      =      &lt;the OCTETs making up the field-value and
                              consisting of either *TEXT or
                              combinations of token, tspecials, and
                              quoted-string&gt;
&gt;
   safe               =  &quot;\$&quot; | &quot;-&quot; | &quot;_&quot; | &quot;.&quot; | &quot;+&quot;
   extra              =  &quot;!&quot; | &quot;*&quot; | &quot;$'$&quot; | &quot;(&quot; | &quot;)&quot; | &quot;,&quot;
&gt;
   hex                =  DIGIT | &quot;A&quot; | &quot;B&quot; | &quot;C&quot; | &quot;D&quot; | &quot;E&quot; | &quot;F&quot; |
                        &quot;a&quot; | &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;f&quot;
   escape             =  &quot;\%&quot; hex hex
   reserved           =  &quot;;&quot; | &quot;/&quot; | &quot;?&quot; | &quot;:&quot; | &quot;@&quot; | &quot;&amp;&quot; | &quot;=&quot;
&gt;
   unreserved         =  alpha | digit | safe | extra
   xchar              =  unreserved | reserved | escape</pre></blockquote><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml">訳注 : 編集上の誤りっぽいところがありますが、原文通りにしておきます。</p></insert></section></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2051" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2051]</anchor-end> RFC 2543 C.1; RFC 3261 25.1 (SIP/2.0) Basic Rules</figcaption><blockquote><p>The following rules are used throughout this specification to
describe basic parsing constructs.  The US-ASCII coded character set
is defined by ANSI X3.4-1986.</p></blockquote><p>次の規則はこの仕様書を通じて基本解析構造体を記述するために使用します。
US-ASCII 符号化文字集合は ANSI X 3.4‐1986 で定義されています。</p><blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>OCTET     =  &lt;any 8-bit sequence of data&gt;</li><li>CHAR      =  &lt;any US-ASCII character (octets 0 - 127)&gt;</li><li>upalpha   =  &quot;A&quot; | &quot;B&quot; | &quot;C&quot; | &quot;D&quot; | &quot;E&quot; | &quot;F&quot; | &quot;G&quot; | &quot;H&quot; | &quot;I&quot; |
&quot;J&quot; | &quot;K&quot; | &quot;L&quot; | &quot;M&quot; | &quot;N&quot; | &quot;O&quot; | &quot;P&quot; | &quot;Q&quot; | &quot;R&quot; |
&quot;S&quot; | &quot;T&quot; | &quot;U&quot; | &quot;V&quot; | &quot;W&quot; | &quot;X&quot; | &quot;Y&quot; | &quot;Z&quot;</li><li>lowalpha  =  &quot;a&quot; | &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;f&quot; | &quot;g&quot; | &quot;h&quot; | &quot;i&quot; |
&quot;j&quot; | &quot;k&quot; | &quot;l&quot; | &quot;m&quot; | &quot;n&quot; | &quot;o&quot; | &quot;p&quot; | &quot;q&quot; | &quot;r&quot; |
&quot;s&quot; | &quot;t&quot; | &quot;u&quot; | &quot;v&quot; | &quot;w&quot; | &quot;x&quot; | &quot;y&quot; | &quot;z&quot;</li><li>alpha     =  lowalpha | upalpha</li><li>digit     =  &quot;0&quot; | &quot;1&quot; | &quot;2&quot; | &quot;3&quot; | &quot;4&quot; | &quot;5&quot; | &quot;6&quot; | &quot;7&quot; |
&quot;8&quot; | &quot;9&quot;</li><li>alphanum  =  alpha | digit</li><li>CTL       =  &lt;any US-ASCII control character</li><li>(octets 0 -- 31) and DEL (127)&gt;</li><li>CR        =  %d13 ; US-ASCII CR, carriage return character</li><li>LF        =  %d10 ; US-ASCII LF, line feed character</li><li>SP        =  %d32 ; US-ASCII SP, space character</li><li>HT        =  %d09 ; US-ASCII HT, horizontal tab character</li><li>CRLF      =  CR LF ; typically the end of a line</li></ul></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>alphanum  =  ALPHA / DIGIT</li></ul></insert></blockquote><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>The following are defined in RFC 2396 [12] for the SIP URI:
Several rules are incorporated from RFC 2396 [5] but are updated to
make them compliant with RFC 2234 [10].  These include:</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">次は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2396</anchor> で定義されており、 SIP URI
で使います。幾つかの規則は RFC 2396 と違っていますが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2234</anchor>
に適合するために更新したものです。</p></insert><blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>unreserved  =  alphanum | mark</li><li>mark        =  &quot;-&quot; | &quot;_&quot; | &quot;.&quot; | &quot;!&quot; | &quot;~&quot; | &quot;*&quot; | &quot;'&quot; | &quot;(&quot; | &quot;)&quot;</li><li>escaped     =  &quot;%&quot; hex hex</li></ul></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>reserved    =  &quot;;&quot; / &quot;/&quot; / &quot;?&quot; / &quot;:&quot; / &quot;@&quot; / &quot;&amp;&quot; / &quot;=&quot; / &quot;+&quot; / &quot;$&quot; / &quot;,&quot; </li><li>unreserved  =  alphanum / mark </li><li>mark        =  &quot;-&quot; / &quot;_&quot; / &quot;.&quot; / &quot;!&quot; / &quot;~&quot; / &quot;*&quot; / &quot;'&quot; / &quot;(&quot; / &quot;)&quot;</li><li>escaped     =  &quot;%&quot; HEXDIG HEXDIG</li></ul></insert></blockquote><blockquote><p>SIP header field values can be folded onto multiple lines if the
continuation line begins with a space or horizontal tab.  All linear
white space, including folding, has the same semantics as SP.  A
recipient MAY replace any linear white space with a single SP before
interpreting the field value or forwarding the message downstream. <ins>This is intended to behave exactly as HTTP/1.1 as described in RFC 2616 [8].  The SWS construct is used when linear white space is optional, generally between tokens and separators.</ins></p></blockquote><p>SIP 頭欄値は、続く行が間隔又は水平タブで始まるのであれば複数行に折畳むことができます。
すべての線形空白は、折畳みも含み、 <code class="ABNF">SP</code>
と同じ意味を持ちます。受信者は、欄値を解釈したり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下流</anchor>にメッセージを転送する前に任意の線形空白を単一の <code class="ABNF">SP</code> に置換しても<strong>構いません</strong>。<ins>これは RFC 2616 で説明されている HTTP/1.1 の場合と全く同じようになることを意図しています。 <code class="ABNF">SWS</code> 構造体は線形空白が省略可能である時、通常は字句と分離子の間で使います。</ins></p><blockquote><ul><li><del> LWS  =  [CRLF] 1*( SP | HT ) ; linear whitespace</del></li><li><ins> LWS  =  [*WSP CRLF] 1*WSP ; linear whitespace</ins></li><li><ins> SWS  =  [LWS] ; sep whitespace</ins></li></ul></blockquote><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>To separate the header name from the rest of value, a colon is used,
which, by the above rule, allows whitespace before, but no line
break, and whitespace after, including a linebreak.  The HCOLON
defines this construct.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">頭名を残りの値と分離するためにコロンを使いますが、
これは上の規則により前に空白を求めるものの改行は認めず、
後には空白を改行も含めて認めます。 <code class="ABNF">HCOLON</code>
はこの構造体を定義します。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li>HCOLON  =  *( SP / HTAB ) &quot;:&quot; SWS</li></ul></blockquote></insert><blockquote><p>The TEXT-UTF8 rule is only used for descriptive field contents and
values that are not intended to be interpreted by the message parser.
Words of *TEXT-UTF8 contain characters from the UTF-8 <del>character set (RFC 2279 [21])</del> <ins>charset (RFC 2279 [7])</ins>. <ins>The TEXT-UTF8-TRIM rule is used for descriptive field contents that are n t quoted strings, where leading and trailing LWS is not meaningful. </ins>
In this regard, SIP differs from HTTP, which uses the ISO 8859-1 character set.</p></blockquote><p><code class="ABNF">TEXT-UTF8</code> 規則は記述的欄内容とメッセージ解析器に解釈されることを意図しない値にのみ使います。
<code class="ABNF">*TEXT-UTF8</code> の語は UTF-8 charset の文字だけを含めます。<ins><code class="ABNF">TEXT-UTF8-TRIM</code> 規則は引用文字列ではなく、最初と最後の <code class="ABNF">LWS</code> が意味を持たない記述的欄内容に使用します。</ins>
この点では、 SIP は ISO 8859‐1 を使用する HTTP と異なります。</p><blockquote><delete xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>TEXT-UTF8  =  &lt;any UTF-8 character encoding, except CTLs, but including LWS&gt;</li></ul></delete><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li>TEXT-UTF8-TRIM  =  1*TEXT-UTF8char *(*LWS TEXT-UTF8char)</li><li>TEXT-UTF8char   =  %x21-7E / UTF8-NONASCII</li><li>UTF8-NONASCII   =  %xC0-DF 1UTF8-CONT /  %xE0-EF 2UTF8-CONT /  %xF0-F7 3UTF8-CONT /  %xF8-Fb 4UTF8-CONT /  %xFC-FD 5UTF8-CONT</li><li>UTF8-CONT       =  %x80-BF</li></ul><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>A CRLF is allowed in the definition of TEXT-UTF8<ins>-TRIM</ins>
only as part of a header field continuation. It is expected that the folding LWS
will be replaced with a single SP before interpretation of the 
TEXT-UTF8<ins>-TRIM</ins> value.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml"><code class="ABNF">CRLF</code> は、 <code class="ABNF">TEXT-TRIM</code> の定義の中では、
頭欄継続の一部としてのみ認められています。
折畳み <code class="ABNF">LWS</code> は <code class="ABNF">TEXT-TRIM</code> 値の解釈の前に単一の
<code class="ABNF">SP</code> に置換されることを意図定しています。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Hexadecimal numeric characters are used in several protocol elements. <ins>Some elements (authentication) force hex alphas to be lower case.</ins></p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">十六進数文字は幾つかのプロトコル要素で使います。<ins>幾つかの要素 (認証) は十六進字母が小文字であることを強制します。</ins></p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li><del>hex  =  &quot;A&quot; | &quot;B&quot; | &quot;C&quot; | &quot;D&quot; | &quot;E&quot; | &quot;F&quot; | &quot;a&quot; | &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;f&quot; | digit</del></li><li><ins>LHEX  =  DIGIT / %x61-66 ;lowercase a-f</ins></li></ul></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Many SIP header field values consist of words separated by LWS or
special characters. <ins>Unless otherwise stated, tokens are case-insensitive.</ins>
These special characters MUST be in a quoted string to be used within a parameter value. <ins>The word construct is used in Call-ID to allow most separators to be used.</ins></p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">多くの SIP 頭欄値は、 <code class="ABNF">LWS</code> または特殊文字で分離される語で構成されます。<ins>別途言及されていない限り、字句は大文字・小文字を区別します。</ins>
特殊文字は引数値中で使うためには引用文字列中にいれなければ<strong>なりません</strong>。 <ins><code class="ABNF">word</code> 構造体は <code class="SIP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Call-ID</anchor></code> でほとんどの分離子を使用できるようにするために使います。</ins></p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li><del>        token       =  1*&lt; any CHAR  except CTL's  or separators&gt;</del></li><li><ins> token       =  1*(alphanum / &quot;-&quot; / &quot;.&quot; / &quot;!&quot; / &quot;%&quot; / &quot;*&quot; / &quot;_&quot; / &quot;+&quot; / &quot;`&quot; / &quot;'&quot; / &quot;~&quot; )</ins></li><li><del>separators  =  &quot;(&quot; | &quot;)&quot; | &quot;&lt;&quot; | &quot;&gt;&quot; | &quot;@&quot; | &quot;,&quot; | &quot;;&quot; | &quot;:&quot; | &quot;\&quot; | &lt;&quot;&gt; | &quot;/&quot; | &quot;[&quot; | &quot;]&quot; | &quot;?&quot; | &quot;=&quot; | &quot;{&quot; | &quot;}&quot; | SP | HT</del></li><li><ins>separators  =  &quot;(&quot; / &quot;)&quot; / &quot;&lt;&quot; / &quot;&gt;&quot; / &quot;@&quot; / &quot;,&quot; / &quot;;&quot; / &quot;:&quot; / &quot;\&quot; / DQUOTE / &quot;/&quot; / &quot;[&quot; / &quot;]&quot; / &quot;?&quot; / &quot;=&quot; / &quot;{&quot; / &quot;}&quot; / SP / HTAB</ins></li><li><ins>word        =  1*(alphanum / &quot;-&quot; / &quot;.&quot; / &quot;!&quot; / &quot;%&quot; / &quot;*&quot; / &quot;_&quot; / &quot;+&quot; / &quot;`&quot; / &quot;'&quot; / &quot;~&quot; / &quot;(&quot; / &quot;)&quot; / &quot;&lt;&quot; / &quot;&gt;&quot; / &quot;:&quot; / &quot;\&quot; / DQUOTE / &quot;/&quot; / &quot;[&quot; / &quot;]&quot; / &quot;?&quot; / &quot;{&quot; / &quot;}&quot; )</ins></li></ul></blockquote><insert><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>When tokens are used or separators are used between elements,
whitespace is often allowed before or after these characters:</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">字句が使われる場合や分離子が要素間で使われる場合には、
空白がしばしばその文字の前後に認められます。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li>STAR    =  SWS &quot;*&quot; SWS ; asterisk</li><li>SLASH   =  SWS &quot;/&quot; SWS ; slash</li><li>EQUAL   =  SWS &quot;=&quot; SWS ; equal</li><li>LPAREN  =  SWS &quot;(&quot; SWS ; left parenthesis</li><li>RPAREN  =  SWS &quot;)&quot; SWS ; right parenthesis</li><li>RAQUOT  =  &quot;&gt;&quot; SWS ; right angle quote</li><li>LAQUOT  =  SWS &quot;&lt;&quot;; left angle quote</li><li>COMMA   =  SWS &quot;,&quot; SWS ; comma</li><li>SEMI    =  SWS &quot;;&quot; SWS ; semicolon</li><li>COLON   =  SWS &quot;:&quot; SWS ; colon</li><li>LDQUOT  =  SWS DQUOTE; open double quotation mark</li><li>RDQUOT  =  DQUOTE SWS ; close double quotation mark</li></ul></blockquote></insert><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Comments can be included in some SIP header fields by surrounding the
comment text with parentheses.  Comments are only allowed in fields
containing &quot;comment&quot; as part of their field value definition.  In all
other fields, parentheses are considered part of the field value.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">注釈は、注釈文を括弧で囲むことで幾つかの SIP 頭欄中に含めることができます。
注釈は、欄値定義の一部に <code class="ABNF">comment</code> を含んでいる欄でのみ認められます。
他のすべての欄では、括弧は欄値の一部とみなされます。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li><del> comment  =  &quot;(&quot; *(ctext | quoted-pair | comment) &quot;)&quot;</del></li><li><ins> comment  =  LPAREN *(ctext / quoted-pair / comment) RPAREN</ins></li><li><del> ctext    =  &lt; any TEXT-UTF8  excluding &quot;(&quot;  and &quot;)&quot;&gt;</del></li><li><ins> ctext    =  %x21-27 / %x2A-5B / %x5D-7E / UTF8-NONASCII / LWS</ins></li></ul></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>ctext includes all chars except left and right parens and backslash.</ins>
A string of text is parsed as a single word if it is quoted using
double-quote marks.  <ins>In quoted strings, quotation marks (&quot;) and backslashes (\) need to be escaped.</ins></p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">;<ins><code class="ABNF">ctext</code> は左右の括弧と逆斜線を除くすべての文字を含みます。</ins>
二重引用符を使って引用されている文字列は単一の語として解析します。<ins>引用文字列中では、引用符 (<code class="SIP">&quot;</code>) と逆斜線 (<code class="SIP">\</code>) は escape する必要があります。</ins></p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li><del> quoted-string  =  ( &lt;&quot;&gt; *(qdtext | quoted-pair ) &lt;&quot;&gt; )</del></li><li><ins> quoted-string  =  SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE</ins></li><li><del> qdtext         =  &lt;any TEXT-UTF8 except &lt;&quot;&gt;&gt;</del></li><li><ins> qdtext         =  LWS / %x21 / %x23-5B / %x5D-7E / UTF8-NONASCII</ins></li></ul></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>The backslash character (&quot;\&quot;) MAY be used as a single-character
quoting mechanism only within quoted-string and comment constructs. <ins>Unlike HTTP/1.1, the characters CR and LF cannot be escaped by this mechanism to avoid conflict with line folding and header separation.</ins></p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">逆斜線文字 (<code class="HTTP">\</code>) は、 <code class="ABNF">quoted-string</code> 構造体および
<code class="ABNF">comment</code> 構造体の中でのみ、
単一文字引用機構として使って<strong>構いません</strong>。<ins>HTTP/1.1 とは異なり、文字 <code class="ABNF">CR</code> 及び <code class="ABNF">LF</code> は行折畳みや頭分離との衝突を避けるためにこの機構を使って escape することはできません。</ins></p><blockquote xmlns="http://www.w3.org/1999/xhtml"><ul><li><del> quoted-pair  =  &quot; \ &quot; CHAR</del></li><li><ins> quoted-pair  =  &quot;\&quot; (%x00-09 / %x0B-0C / %x0E-7F)</ins></li></ul></blockquote></insert></blockquote></figure><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>Apache HTTP Server Project</cite>
( (<time>2011-05-28 00:58: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="http://httpd.apache.org/docs/1.3/misc/known_client_problems.html#force-response-1.0">http://httpd.apache.org/docs/1.3/misc/known_client_problems.html#force-response-1.0</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="532" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[532]</anchor-end> <cite xml:lang="en">RFC 2660 - The Secure HyperText Transfer Protocol</cite>
( (<time>2014-05-03 23:12:15 +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/rfc2660#section-2.4.2">http://tools.ietf.org/html/rfc2660#section-2.4.2</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2055" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2055]</anchor-end> <cite xml:lang="en">RFC 4236 - HTTP Adaptation with Open Pluggable Edge Services (OPES)</cite>
( (<time>2014-09-22 20:05:44 +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/rfc4236">https://tools.ietf.org/html/rfc4236</anchor-external></p><figure class="quote"><figcaption><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> <cite xml:lang="en">Final: OpenID Connect Core 1.0 incorporating errata set 1</cite>
(<time>2014-11-09 04:00:29 +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://openid.net/specs/openid-connect-core-1_0.html#Terminology">http://openid.net/specs/openid-connect-core-1_0.html#Terminology</anchor-external></figcaption><blockquote><p>Message</p><p>Request or a response between an OpenID Relying Party and an OpenID Provider.</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">mod_proxy_http - Apache HTTP Server Version 2.4</cite>
(<time>2015-01-18 02:21:01 +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://httpd.apache.org/docs/current/en/mod/mod_proxy_http.html">http://httpd.apache.org/docs/current/en/mod/mod_proxy_http.html</anchor-external></figcaption><blockquote><p>proxy-sendextracrlf</p><p>Causes proxy to send an extra CR-LF newline on the end of a request. This is a workaround for a bug in some browsers.</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">RFC 5989 - A SIP Event Package for Subscribing to Changes to an HTTP Resource</cite>
(<time>2015-09-20 16:18: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://tools.ietf.org/html/rfc5989">https://tools.ietf.org/html/rfc5989</anchor-external></figcaption><blockquote><p>By default, the message bodies of NOTIFY messages for the http-</p><p>monitor event package will be of content-type &quot;message/http,&quot; as</p><p>defined in RFC 2616 <strong>[</strong>2<strong>]</strong>.</p></blockquote></figure></section></body></html>