[15] CGI のメタ変数 REMOTE_ADDR
は、
クライアントのIPアドレスを表します。
[16] 鯖は REMOTE_ADDR
メタ変数の値をクライアントのネットワーク番地に設定しなければなりません >>14。
REMOTE_ADDR = hostnumber hostnumber = ipv4-address | ipv6-address ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit ipv6-address = hexpart [ ":" ipv4-address ] hexpart = hexseq | ( [ hexseq ] "::" [ hexseq ] ) hexseq = 1*4hex *( ":" 1*4hex )
[23] この値は串を挟む場合などに最終的な受信者になるとは限らないことに注意が必要です。
>>22 その場合 X-Forwarded-For:
(HTTP_X_FORWARDED_FOR
)
を使うのが一般的です。
[4] HTTP::Request::AsCGI
は REMOTE_ADDR
を常に 127.0.0.1
とします。
[1] [NCSA]:
The IP address of the remote host making the request.
その要求を作った遠隔ホストの IP アドレス。
[2] [COAR 03]:
The IP address of the client sending the request to the server. This is not necessarily that of the user agent (such as if the request came through a proxy).
その要求をサーバーに送信したクライアントの IP アドレス。これは必ずしも利用者エージェントの IP アドレスである必要はありません。 (たとえば串を通ってきた要求の場合。)
- REMOTE_ADDR = hostnumber
- hostnumber = ipv4-address | ipv6-address
The definitions of ipv4-address and ipv6-address are provided in Appendix B of RFC 2373 [13].
Servers MUST supply this value to scripts.
ipv4-address
及び
ipv6-address
は RFC2373 の付属書 B
で提供されています。
サーバーはこの値をスクリプトに供給しなければなりません (MUST)。
[3] ごらんのように、 [NCSA] では IPv6 アドレスの扱いが謎なんですが (そりゃぁその時代には存在してなかったんだから。)、 [COAR] ではそのままふつーに書けることが明確化しています。
[19] ドメイン名を値とするメタ変数 REMOTE_HOST
もあります。
[20] SERVER_NAME
ではIPv6アドレスは括弧で括られますが、
REMOTE_ADDR
ではそうではありません。なぜ両者で違っているのかは不明です。