<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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>群 <dfn><code class="CGI">HTTP_<var>*</var></code></dfn>
は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>から送られてきた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求メッセージ</anchor>中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</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><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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</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-4.1.18">http://tools.ietf.org/html/rfc3875#section-4.1.18</anchor-external></strong></li><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> <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-9.2">http://tools.ietf.org/html/rfc3875#section-9.2</anchor-external></li></ul></li><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> <cite xml:lang="en">PEP 333 -- Python Web Server Gateway Interface v1.0</cite> (<time>2012-02-16 21:06:34 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.python.org/dev/peps/pep-0333/#environ-variables">http://www.python.org/dev/peps/pep-0333/#environ-variables</anchor-external></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> <cite xml:lang="en">File: SPEC <strong>[</strong>'Rack Documentation<strong>']</strong></cite> (<time>2010-01-11 00:57:50 +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://rack.rubyforge.org/doc/SPEC.html">http://rack.rubyforge.org/doc/SPEC.html</anchor-external></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> <cite>jack - jsgi spec</cite> (<time>2009-09-04 16:47:22 +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://jackjs.org/jsgi-spec.html#the_environment">http://jackjs.org/jsgi-spec.html#the_environment</anchor-external></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> <cite>PSGI - search.cpan.org</cite> (<time>2012-02-16 22:39: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://search.cpan.org/dist/PSGI/PSGI.pod#The_Environment">http://search.cpan.org/dist/PSGI/PSGI.pod#The_Environment</anchor-external></li></ul></refs></section><section><h1>名前</h1><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>
<code class="CGI">HTTP_<var>*</var></code> の <code class="CGI"><var>*</var></code>
の部分は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前</anchor>をすべて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>にし、
<code class="HTTP">-</code> が含まれていればすべて <code class="CGI">_</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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</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="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 例えば、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept</anchor>:</code> 欄に対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>名は
<code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_ACCEPT</anchor></code> となりますし、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">If-Modified-Since</anchor>:</code> 欄に対応するものは
<code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_IF_MODIFIED_SINCE</anchor></code> となります。</p></example><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> <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>の<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 各 <code class="CGI">HTTP_<var>*</var></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>の値には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>からの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal></src></p><ul><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>が複数あれば、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">,</anchor></code> で連結することによって1つにしなければ<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="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>が複数行で表されていれば (<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="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:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。</li></ul><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> <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language</anchor></code> と <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept_language</anchor></code> のように本来別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>が命名規則のために衝突する場合や、
複数の値を <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP">,</code> によって意味的に等価でありつつ連結できない場合 
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(本来それは <anchor>HTTP</anchor> 違反ですが、しばしばあります。)</weak> にどうするべきかは規定されていません。
後者については実際には<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="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:">頭欄</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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3875</anchor> 4.1.18</src> 特に <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_TYPE</anchor></code>
(<code class="HTTP"><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>が用意されているもの、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Authorization</anchor></code> など安全上好ましくないもの、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Connection</anchor></code> など通信にのみ関係するものは提供されないかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal> に規定されているように、鯖は CGI スクリプトに要求メッセージのすべての頭欄を
<code class="CGI">HTTP_<var>*</var></code> メタ変数を通じて提供する必要はありません。
多くの実装では、次の頭欄は提供されません。</p><table><tbody><tr><td>HTTP 頭欄</td><td>代替メタ変数</td></tr><tr><td><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Authorization</anchor></code></td><td><code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AUTH_<var xmlns="http://www.w3.org/1999/xhtml">*</var></anchor></code></td></tr><tr><td><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Length</anchor></code></td><td><code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_LENGTH</anchor></code></td></tr><tr><td><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type</anchor></code></td><td><code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_TYPE</anchor></code></td></tr></tbody></table><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal> つまり、 CGI 的には <code class="CGI">HTTP_AUTHORIZATION</code> と かが提供されていて<em>も</em>問題がないということです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は提供してくれません。</p><p><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:">CGI/1.0</anchor> 時代に <code>HTTP_<var>*</var></code> 
が存在しなかったことに由来するものです。 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal>)</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> CGI メタ変数はほとんどの環境では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>として実装されていますが、
環境変数が安全でない環境も少なくありません。
その鯖の任意の利用者が環境変数の値を見ることができるかもしれません。
CGI で昔から認証系の頭欄が提供されないことになっているのはそのような事情があります。</p><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Authorization:</anchor></code> の他、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Proxy-Authorization:</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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal></src>。</p><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>HTTP_PROXY</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>に関する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">脆弱性</anchor>を防ぐため、
<code class="HTTP" xml:lang="en">Proxy:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>があっても <code class="CGI" xml:lang="en">HTTP_PROXY</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>を省略するようです。
<code>Proxy:</code> は通常使われないので、
この挙動は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>を使うすべての実装で推奨されます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>HTTP_PROXY</anchor> </sw-see></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:">WSGI</anchor> と派生仕様は <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">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>に対応するべきであるとしており、
<code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_TYPE</anchor></code> と <code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_LENGTH</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="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;28</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;29</anchor-internal>, <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>, <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></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WSGI</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="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:">SIP CGI</anchor> は他の手段で取得できるものも含めすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を 
<code>SIP_<var>*</var></code>
で提供する<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき</SHOULD>と定めています。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP CGI</anchor>
よりはかなり強い要件 (原則として提供する) となっていますが、
それでもなぜか提供しない余地を残しています。</p></section><section><h1>歴史</h1><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> <code class="CGI">HTTP_<var>*</var></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:">CGIスクリプト</anchor>に提供する方法は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI/1.1</anchor>
で導入されました。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI/1.0</anchor> では <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_TYPE</anchor></code>
や <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_ACCEPT</anchor></code> など一部の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>のみが提供されていました。</p><section><h1>[NCSA] での説明</h1><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></p><blockquote><p>In addition to these, the header lines received from
the client, if any, are placed into the environment
with the prefix HTTP_ followed by the header name.
Any - characters in the header name are changed to _
characters. The server may exclude any headers which
it has already processed, such as Authorization,
Content-type, and Content-length. If necessary, the
server may choose to exclude any or all of these
headers if including them would exceed any system
environment limits. </p></blockquote><p>これら <ins>(訳注: 他の CGI メタ変数群)</ins>
に加えて、クライアントから受け取った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭行</anchor>があれば、
これが接頭辞 <code class="CGI">HTTP_</code>
で始まって頭名が続く環境<ins>変数</ins>に入れられます。
頭名中の <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">-</anchor></code>
はすべて <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">_</anchor></code>
に変更します。
サーバーは既に処理した頭、
例えば <code class="HTTP">Authorization</code>,
<code class="HTTP">Content-type</code>,
<code class="HTTP">Content-length</code>
は除いても構いません。
必要なら、サーバーはこうした頭の一部又は全部を含めるとシステムの環境制限を越える時には除いても構いません。</p></section><section><h1>RFC 3875 (CGI/1.1)</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:">RFC 3875</anchor> 4.1.18 節を参照。</p></section></section><section><h1>セキュリティー</h1><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal> のように実装方法によっては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>は安全ではないので、
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;14</anchor-internal> の通り危険な情報は提供しないなどの注意を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は払う必要があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> ただし <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal> のような配慮が可能なのは、
注意するべき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">頭欄</anchor>の種類をあらかじめ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が把握している場合だけです。
<samp class="HTTP">X-Foo-Private-Information: some-important-thing</samp>
のような<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:">CGI</anchor> が使われている環境にアクセス可能な第三者に盗み見られる危険性があります。</p><p>もちろん、<q>盗み見</q>ることができる権限があるのが信頼できる限定された人だけである場合など、
必ずしも危険であるわけではありません。
このようなシステムの設計者は使用するシステムの技術的・
運用上の性質によく注意して、
安全性と技術的な実装の簡単さや技術的整合性のバランスが取れるようにしなければなりません。</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> <code class="CGI">HTTP_</code> から始まる名前の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>を参照する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラム</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>を利用する際には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>として設定された状態のまま呼び出してしまうことが無いよう、
注意する必要があります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http_proxy</anchor></code> も参照してください。</comment-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> <code>WWW_HOME</code> の意味で <code>HTTP_HOME</code> が使われることがあります。</p></section><section><h1>関連</h1><section><h1>HTTP/TLS、HTTP/SSL (HTTPS)</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>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> の上で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> 通信を行っている場合
(いわゆる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor>) であっても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> であることには変わりありませんので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP</anchor> 上の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> と同じ名前で同じように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>が提供されます。
(ただし実装によってはより安全を配慮した形になっているかもしれません。)
実装によっては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> 
によって得られた情報が別の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>を通じて提供されています。</p><delete 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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 方式 (scheme) が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">https:</anchor> だったら <em>HTTPS_<var>*</var></em> になるんでしょうか。そんなの見たこと無いなあ。</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> そんなことはないです。 HTTP over SSL でも <code class="CGI">HTTP_<var>*</var></code> になります。</li></ul></delete><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</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:">HTTPS</anchor></code> によって表されます。</p></section><section><h1><code>SIP_<var>*</var></code> メタ変数</h1><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:">SIP CGI</anchor> では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求メッセージ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>
<dfn><code class="CGI" xml:lang="en">SIP_<var>*</var></code></dfn> として提供されます。</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> 
<code class="CGI">SIP_<var>*</var></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor>群は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SIP</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 CGI</anchor> では
<code class="CGI">HTTP_<var>*</var></code>
メタ変数群に相当します。</p><figure class="quote"><figcaption><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:">RFC 3050</anchor> (SIP-CGI/1.1) 5.5.1.5 Protocol-Specific Metavariables</figcaption><blockquote><p>These metavariables are specific to the protocol via which the method
is sent.  Interpretation of these variables depends on the value of
the SERVER_PROTOCOL metavariable (see section 5.5.1.20).</p></blockquote><p>これらのメタ変数群は、
method が送信されたプロトコルに特有のものです。
これらの変数の解釈は
<code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SERVER_PROTOCOL</anchor></code>
メタ変数の値に依存します。</p><blockquote><p>Metavariables with names beginning with &quot;SIP_&quot; contain values from
the message header, if the protocol used was SIP.  Each SIP header
field name is converted to upper case, has all occurrences of &quot;-&quot;
replaced with &quot;_&quot;, and has &quot;SIP_&quot; prepended to form the metavariable
name.  Similar transformations are applied for other protocols.  The
header data MAY be presented as sent by the client, or MAY be
rewritten in ways which do not change its semantics.  If multiple
header fields with the same field-name are received then the server
MUST rewrite them as though they had been received as a single header
field having the same semantics before being represented in a
metavariable.  Similarly, a header field that is received on more
than one line MUST be merged into a single line.  The server MUST, if
necessary, change the representation of the data (for example, the
character set) to be appropriate for a CGI metavariable.</p></blockquote><p>名前が <code class="CGI">SIP_</code>
から始まるメタ変数群には、
使用されているプロトコルが SIP
である時にメッセージ頭からの値を設定します。
各 SIP 頭欄名は大文字に変換され、
全ての <code class="SIP">-</code>
を <code class="CGI">_</code>
に置換し、 <code class="CGI">SIP_</code>
を頭につけてメタ変数名を形成します。
同様の変換が他のプロトコルにも適用されます。
頭データはクライアントから送られたままにしても<strong>構いません (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MAY</anchor>)</strong>
し、その意味を変更しない範囲で書き換えても<strong>構いません (MAY)</strong>。
同じ欄名の複数の頭欄を受信した時は、
サーバーはメタ変数として表現する前にこれを書き換えて同じ意味を持つ単一の頭欄を受信したようにしなければ<strong>なりません (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MUST</anchor>)</strong>。
同様に、複数行で受信した頭欄は単一行に併合しなければ<strong>なりません (MUST)</strong>。
サーバーは、必要であれば、
データの表現 (例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字集合</anchor>)
を変更して CGI
メタ変数として適切なものとしなければ<strong>なりません (MUST)</strong>。</p><blockquote><p>Note: these metavariables' names were changed from HTTP_*
to SIP_* since the first draft of this specification.  The
intention had been to make it easier to use existing CGI
libraries unmodified, but this convenience was felt to be
outweighed by the confusion this introduced.</p></blockquote><p>注意: これらのメタ変数群の名前は、
この仕様書の最初の原案から、
<code class="CGI">HTTP_*</code> から
<code class="CGI">SIP_*</code> に変更しました。
その意図は、既存の CGI
ライブラリを修正せずに使用することを用意とすることにありますが、
この便宜はこれが招く混乱より価値があると感じられます。</p><blockquote><p>Servers are not required to create metavariables for all the message
header fields they receive.  However, because of the relatively high
importance of headers in SIP for messages' semantic content, the
server SHOULD provide all headers which do not contain potentially
sensitive authorization information, such as Authorization.  Servers
SHOULD provide protocol-specific metavariables even for information
which is available through other SIP CGI metavariables, such as
CONTENT_LENGTH and CONTENT_TYPE.</p></blockquote><p>サーバーに対してその受信した全てのメッセージ頭欄に関してメタ変数を作成することは要求していません。
しかし、 SIP においてメッセージの意味内容に頭が比較的高い重要性を持つことから、
サーバーは繊細な認証情報を含む可能性がある
<code class="SIP">Authorization</code> のようなものの他は全ての頭欄を提供する<strong>べきです (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SHOULD</anchor>)</strong>。
サーバーは、他の SIP CGI
メタ変数、例えば <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_LENGTH</anchor></code>
や <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CONTENT_TYPE</anchor></code>
から利用可能な情報であっても、
プロトコル特有メタ変数を提供する<strong>べきです (SHOULD)</strong>。</p><blockquote><p>This allows a SIP CGI script to determine, if necessary,
whether the information in the other metavariables was in
the original message, or was synthesized by the server.</p></blockquote><p>これによって SIP CGI
が必要であれば他のメタ変数の情報が元のメッセージにあったものか、
それともサーバーが生成したものかを判断できます。</p></figure></section><section><h1><code>HTTP_<var>*</var></code> 環境変数</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> <dl><dt><code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_<var xmlns="http://www.w3.org/1999/xhtml">*</var></anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> をはじめ多くの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor>
の実装で、 <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_<var xmlns="http://www.w3.org/1999/xhtml">*</var></anchor></code> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ変数</anchor> (<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:">環境変数</anchor>として実装されています。</dd><dt><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_HOME</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">w3m</anchor> など <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザ</anchor>類で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホーム頁</anchor>の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor> を指定する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">環境変数</anchor>として使われています。</dd><dt><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP_PROXY</anchor></code></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">w3m</anchor> など <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WWW</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>として使われています。</dd></dl></p></section></section></body></html>