[15] [[CGI]] の[[メタ変数]] [DFN[[CODE(CGI)@en[[[REMOTE_ADDR]]]]]] は、 [[クライアント]]の[[IPアドレス]]を表します。 * 仕様書 [REFS[ - [14] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) ]REFS] * 値 [16] [[鯖]]は [CODE(CGI)@en[[[REMOTE_ADDR]]]] [[メタ変数]]の値を[[クライアント]]の[[ネットワーク番地]]に設定しなければ[['''なりません''']] [SRC[>>14]]。 [17] 構文は次の通りです [SRC[>>14]]。 [PRE(ABNF code)[ 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 ) ]PRE] ;; [18] この定義は [[IPv4アドレス]]や[[IPv6アドレス]]の本来の構文よりかなり緩い定義です。 仕様上、[[IPv6アドレス]]については [[RFC 3513]] の参照がありますが、 [[IPv4アドレス]]については明記されていません。 * 歴史 [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. [CODE[ipv4-address]] 及び [CODE[ipv6-address]] は [[RFC2373]] の付属書 B で提供されています。 サーバーはこの値をスクリプトに供給し'''なければなりません ([[MUST]])'''。 [3] ごらんのように、 [NCSA] では [[IPv6]] アドレスの扱いが謎なんですが (そりゃぁその時代には存在してなかったんだから。)、 [COAR] ではそのままふつーに書けることが明確化しています。 ;; [[IPv6アドレス]]は場面によっては [CODE[[['''['''[VAR[...]]''']''']]]] で括らなければなりませんが、 [CODE(CGI)@en[[[REMOTE_ADDR]]]] では括ってはいけないようです。