<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="505" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[505]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> の<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>応答</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">response</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:">CGIスクリプト</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><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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="en">RFC 3875 - The Common Gateway Interface (CGI) Version 1.1</cite> <ul><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-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/rfc3875#section-4.3.3">http://tools.ietf.org/html/rfc3875#section-4.3.3</anchor-external></li><li><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> <strong><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/rfc3875#section-6">http://tools.ietf.org/html/rfc3875#section-6</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="322" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[322]</anchor-end> <anchor-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/rfc3875#section-8.2">http://tools.ietf.org/html/rfc3875#section-8.2</anchor-external></li></ul></li></ul></refs></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI応答</anchor>は、<ul><li>1つ以上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor></li><li><code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NL</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答本体</anchor> (省略可能)</li></ul></p><p>... の3つの部分により構成されます。あるいは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI応答</anchor>は次の3種類に分類できます。 <RC xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></RC><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書応答</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">局所リダイレクト応答</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアントリダイレクト応答</anchor></li></ul></p></section><section><h1>CGI の頭欄</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="304" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[304]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI応答</anchor>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>は、<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="305" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[305]</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:">CGI欄</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="306" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[306]</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><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="307" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[307]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP頭欄</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP頭欄</anchor>など</li></ul></li></ul></p><p>... の2種類に分けられます。詳しくは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI欄</anchor>の項をご覧ください。</p><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="308" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[308]</anchor-end> <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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。<pre class="ABNF code">      generic-field   = field-name &quot;:&quot; [ field-value ] NL
      field-name      = token
      field-value     = *( field-content | LWSP )
      field-content   = *( token | separator | quoted-string )</pre></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="309" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[309]</anchor-end> <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">field-name</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字・小文字不区別</anchor>です。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="310" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[310]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NULL</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</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="311" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[311]</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:">CGI</anchor> ではそれが等価とみなされてしまいます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="312" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[312]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</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="313" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[313]</anchor-end> 構文上、 <code xmlns="http://www.w3.org/1999/xhtml" class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LWSP</anchor></code> に改行が含まれるので、それよりも強い制約があることになります。
(というか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NL</anchor> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LWSP</anchor> として使ってしまうと解釈が一意でなくなってしまいますが・・・。)</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="314" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[314]</anchor-end> <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">:</anchor></code> の後や、 <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">field-value</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</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="315" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[315]</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:">LWSP</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:">Location:</anchor></code> 欄の構文と矛盾しているようですが、良いのでしょうか・・・。
と思いましたが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> で規定される3つの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI欄</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>がこの字句化とは矛盾しますね。 
(結果として構文的に表現可能ではあるのでしょうが・・・。)</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="321" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[321]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI欄</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="322" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;322</anchor-internal></src></p></section><section><h1>プロトコル依存の頭欄</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="316" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[316]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</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>は<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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="317" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[317]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unix</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:">HTTP</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CRLF</anchor> に置き換えなければなりません</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="318" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[318]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>との通信に支障が出る<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>を除去して構いません</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="319" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[319]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></li></ul></section></section><section><h1>文書応答</h1><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> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書応答<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">document response</rt></rubyb></dfn>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に対して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>を返すものです。 <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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src><ul><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type:</anchor></code> 欄は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">必須</strong></anchor>です</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status:</anchor></code> 欄を指定することができます</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> その他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>を指定することができます</li><li><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>を指定することができます</li></ul></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:">CGI応答</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</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="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:">転送符号化</anchor>等を適用するくらいです。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="324" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[324]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type:</anchor></code> は省略可能なようです。</p></section><section><h1>局所リダイレクト応答</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">局所リダイレクト応答<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">local redirect response</rt></rubyb></dfn>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>が指定した <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location:</anchor></code> 欄は必須であり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path</anchor> からはじまる構文でなければなりません</li><li><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:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor></li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は<pre>      scheme &quot;://&quot; server-name &quot;:&quot; server-port local-pathquery</pre><p>... という <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> (<code>local-pathquery</code> が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location:</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト・ループ</anchor>に対する処理をどうするべきか明確にされていません。</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="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> が守られていない場合にどうなるのかも明確にされていません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="501" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[501]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>が指定されていると、それが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>先の <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>されているとそれらがすべて順に
(後のものほど後に) 付加されていきます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="328" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[328]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</anchor-internal> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">500</anchor> エラーとなります。 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="501" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;501</anchor-internal> はこのエラーの場合も含めて適用されます。</p></section><section><h1>クライアント・リダイレクト応答</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント・リダイレクト応答<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">client redirect response</rt></rubyb></dfn>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に対して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リダイレクト</anchor>を指示するものです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>付きと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>無しの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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src>。</p><ul><li><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location:</anchor></code> 欄は必須であり、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URL</anchor>でなければなりません</li><li><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> 文書無しの場合、<ul><li><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status</anchor></code>, <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type</anchor></code>, <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location</anchor></code>
<em>以外</em>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI頭欄</anchor>を使って構いません</li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI頭欄</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="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>を使ってはなりません</li></ul></li><li><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> 文書付きの場合<ul><li><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status</anchor></code>, <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type</anchor></code>, <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location</anchor></code>
のすべてを指定しなければなりません</li><li><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status</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></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> 他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>を指定して構いません</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答本体</anchor>を使って構いません</li></ul></li></ul><p><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>は文書無しの場合 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">302</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="303" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[303]</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:">CGI応答</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="327" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[327]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status:</anchor></code> が無く<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対path</anchor>であれば <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>
により、それ以外ならこちらにより処理するようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="325" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[325]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では (現実の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>の実装がそうであるように) <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Location:</anchor></code>
の値が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対URL</anchor>であっても構いません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="326" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[326]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache2</anchor> では <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Status:</anchor></code> が無ければ <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal>、あれば <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal> 
と解釈されるようです。 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal> の場合 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type:</anchor></code> や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答本体</anchor>があっても無視されます。</p></section><section><h1>処理モデル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を準備するに当たり <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REQUEST_METHOD</anchor></code>
をチェックしなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タイムアウト</anchor>を設定して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">構いません</strong></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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="320" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[320]</anchor-end> <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">response-body</rt></rubyb></dfn>は、零個以上の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OCTET</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:">CGIスクリプト</anchor>が提供したデータをすべて、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EOF</anchor>
に到達するまで読まなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。
それをそのまま無変更で送信する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor>。
ただし、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEAD</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:">charset</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="323" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[323]</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:">CGI応答</anchor>に使われてしまうことがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="504" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[504]</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:">標準出力</anchor>が閉じられると <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>を終了させる実装もあるようです。</p></section><section><h1><code class="CGI" xml:lang="en">HEAD</code> の場合</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEAD</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:">CGIスクリプト</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>。
<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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>は <code xmlns="http://www.w3.org/1999/xhtml" class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEAD</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>に対応しておらず、
<code xmlns="http://www.w3.org/1999/xhtml" class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> と同じものを返し、結果として <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> の要件に違反しています。</comment-p></section><section><h1>NPH スクリプトの場合</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NPHスクリプト</anchor>は完全な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答メッセージ</anchor>を返すことが求められています。
詳しくは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NPH応答</anchor>の項を参照してください。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="502" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[502]</anchor-end> <cite>CGIの動作について</cite>
( (<time>2006-12-17 14:21:19 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chaichan.web.infoseek.co.jp/qa3000/qa3198.htm">http://chaichan.web.infoseek.co.jp/qa3000/qa3198.htm</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="503" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[503]</anchor-end> <cite xml:lang="ja">close(STDOUT)するとCGIが終了する。 | OKWave</cite>
( (<time>2012-02-25 23:24:56 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://okwave.jp/qa/q6476437.html">http://okwave.jp/qa/q6476437.html</anchor-external></p></section></body></html>