<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="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> <dfn><code class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_HOST</anchor></code></dfn>
は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全修飾ドメイン名</anchor>
(<abbr><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FQDN</anchor></abbr>) を値として持ちます。</p><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:">メタ変数</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:">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:">HTTPクライアント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPアドレス</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>は、必要ならいつでも <code>REMOTE_ADDR</code> を自力で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">逆引き</anchor>できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">HTTPサーバー</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:">PSGI</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>の実装では、
<code>REMOTE_HOST</code> を提供しないか、提供しないのが標準設定となっています。</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:">CGIスクリプト</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PHP</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:">可搬性</anchor>) のため、 <code>REMOTE_HOST</code>
を使うべきではありません。</p></section><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</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.9">http://tools.ietf.org/html/rfc3875#section-4.1.9</anchor-external></strong></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-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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> RFC 3875 によれば、 <code class="CGI">REMOTE_HOST</code>
の値は次の構文によります。</p><ul><li><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> <code class="ABNF"><dfn>REMOTE_HOST</dfn> := <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NULL</anchor> / hostname / hostnumber</code><ul><li><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> <code class="CGI">NULL</code> は、 FQDN 情報が利用できないことを表します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875 4.1.9</src></li><li><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> 効率その他の理由で <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_ADDR</anchor></code>
と同じ <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">hostnumber</anchor></code> を使っても<strong>構いません</strong>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875 4.1.9</src></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> <code class="ABNF"><dfn>hostname</dfn> := *(domainlabel &quot;.&quot;) toplabel [&quot;.&quot;] </code><ul><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> RFC 1034 3.5節および RFC 1123 3.1節に基づく FQDN です。</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> 大文字・小文字を区別<em>しません</em>。</li></ul></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> <code class="ABNF"><dfn>domainlabel</dfn> := (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPHA</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DIGIT</anchor>) [*(ALPHA / DIGIT / &quot;-&quot;) (ALPHA / DIGIT)] </code></li><li><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="ABNF"><dfn>toplabel</dfn> := <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPHA</anchor> [*(ALPHA / DIGIT / &quot;-&quot;) (ALPHA / DIGIT)] </code></li></ul><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> 鯖はこの変数を設定する<strong>べきです</strong> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875 4.1.9</src>。
FQDN が利用できない場合には、 <code class="CGI">NULL</code> 値
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>空文字列</anchor>または <anchor>null</anchor> 値)</weak> を設定します
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal>)。あるいは、 <code class="CGI">REMOTE_ADDR</code> と同じ値にしても<strong>構いません</strong>
(<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><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal> の規定 (前半) は無視され、設定によって無効になっているとき値を設定しないのが普通であるように思えます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <code class="CGI">REMOTE_HOST</code> の値が IP 番地かホスト名かは、
<code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_ADDR</anchor></code> の値と比較すればわかります。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(IP 番地が設定される <code xmlns="http://www.w3.org/1999/xhtml" class="CGI">REMOTE_ADDR</code> は鯖が必ず設定しなければ<strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong>から、必ず比較ができます。)</weak>
両者が等しければ <code class="CGI">REMOTE_HOST</code> は IP 番地です。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(厳密には、大文字・小文字を区別しないで比較しなければなりません。)</weak></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> <code xmlns="http://www.w3.org/1999/xhtml" class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_HOST</anchor></code> が <code xmlns="http://www.w3.org/1999/xhtml" class="CGI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_ADDR</anchor></code> とは別の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPアドレス</anchor>になることは無いはずです。</comment-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>を挟む場合などに最終的な受信者と異なることがあります。 <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="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <code class="CGI" xml:lang="en">HTTP::Request::AsCGI</code> は常に <code>localhost</code> とします。</p><section><h1>ドメイン名</h1><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:">ドメイン名</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LDHラベル</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:">鯖</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="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> の仕様は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</anchor>以前のものであり、また構文的にも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN未対応ドメイン名スロット</anchor>であると考えられます。
つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</anchor> はそのまま返され、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</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="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:">IDNA</anchor> 以外の方法、例えば生の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</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:">charset</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>を含む値が返されることになるかもしれません。</comment-p></section></section><section><h1>歴史</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end>  [CGP#515] <cite>CGP/1.0 specification</cite> (CGI/1.0 の最初の仕様書案)<ul><li><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="mid:9311180039.AA06991@void.ncsa.uiuc.edu">mid:9311180039.AA06991@void.ncsa.uiuc.edu</anchor-external></li><li><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://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q4.messages/515.html">http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q4.messages/515.html</anchor-external></li></ul></li></ul></refs><section><h1>NCSA CGI/1.1</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end></p><blockquote><p>The hostname making the request. If the server does not have this information, it should set REMOTE_ADDR and leave this unset.</p></blockquote><p><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"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">REMOTE_ADDR</anchor></code> を設定し、こちらは設定しないでおくべきです。</p></section><section><h1>CGI/1.1 I-D 03 版</h1><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></p><blockquote><p>The fully qualified domain name of the client sending the request to the server, if available, otherwise NULL. (See section 6.1.9.) Fully qualified domain names take the form as described in section 3.5 of RFC 1034 [10] and section 2.1 of RFC 1123 [5]. Domain names are not case sensitive. </p><p>Servers SHOULD provide this information to scripts. </p></blockquote><p>要求を鯖に送信したクライアントの<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:">NULL</anchor></code> です。
完全修飾ドメイン名は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1034</anchor> の3.5節と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1123</anchor>
の2.1節で説明されている形式を取ります。
ドメイン名は大文字・小文字を区別しません。</p><p>鯖はこの情報をスクリプトに提供する<strong>べきです</strong>。</p></section><section><h1>RFC 3875 (CGI/1.1)</h1><p>→ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3875</anchor> 4.1.9</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code class="CGI">REMOTE_HOST</code> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI/1.0</anchor> の最初の原案
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">CGP#515</src> で既に CGI の環境変数として用意されていました。
CGI/1.0 の正式版仕様書は現時点で未発見ですが、
おそらくそのまま残ったのでしょう。</p><p>その後、 CGI/1.1 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">NCSA</src> にも <code class="CGI">REMOTE_HOST</code>
は引き継がれました。</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> 当初の仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">NCSA</src> は値が FQDN であることは要求せず、
単に<q>ホスト名</q>としか述べていませんでした。新しい仕様書
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875</src> は明確に FQDN であることを要求していますが、
現在に至るまで、実装が必ずしも FQDN を返すわけではありません。
(何も考えずに実装すると <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gethostbyaddr</anchor></code>
を使って <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IP番地</anchor>から変換することになるのでしょうから、
FQDN であることは保証されません。)</p><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> また、古い仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">NCSA</src> ではホスト名情報が利用できない時にこの変数を設定するべきではないと述べているのに対し、
現在の仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875</src> は <code class="CGI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NULL</anchor></code> 値を設定<em>する</em>べきであるとしています。
加えて、新しい仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875</src> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IP番地</anchor>を値として設定することも認めています。</p><p>後者については、新しい仕様書 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">RFC 3875</src> が出版されるかなり以前から
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPv4番地</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="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</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> ところが IPv4 番地を <code class="CGI">REMOTE_HOST</code>
に設定するのは実は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NCSA</anchor> の鯖だったりします。
手元の雑誌 (1997) の画面写真によれば、 <code>NCSA/1.5.2</code> です。</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> 以前はほとんどの鯖で <code class="CGI">REMOTE_HOST</code>
に適当なホスト名が入れられていたようですが、
1990年代の後半にこの状況は激変しました。 
IP 番地からホスト名を引くのにはそれなりの時間がかかるので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> の設定の既定値がこの機能を<q>切</q>とするようになったためです。
これにより <code class="CGI">REMOTE_HOST</code> が存在することを当てにしていた少なからぬ
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>が影響を受けました。</p></section></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> Apache では、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HostnameLookups</anchor></code> 指令の値によりこのメタ変数が設定されるかが決まります。</p></section><section><h1>メモ</h1><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> <code class="CGI">REMOTE_HOST</code> の値としてホスト名が得られない場合は、
<code class="CGI">REMOTE_ADDR</code> の値を使って変換するのがよいでしょう
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(というか普通はそれしか方法がないでしょう)</weak>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TCP/IP</anchor> が使える環境なら、ほぼ間違いなく <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">gethostbyaddr</anchor></code>
が存在するはずです。 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Perl</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PHP</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">gethostbyaddr</code> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IPv6</anchor>
番地に対応していないかもしれません。新しい環境であっても
IPv6 が有効でなければ意味がありません。もっとも、
そのような場合に鯖から IPv6 番地が渡されることはありえないはずです。</comment-p></section></body></html>