|
- HTTP(Hyper Text Transfer Protocol)環境変数とは
- HTTP環境変数とは
- ユーザがWebサーバからページを取得する際に送信されるもので,ブラウザの種類やリンク元の情報などが含まれている変数です。
例えば,アクセスしてきたユーザのIPアドレスやブラウザの名前などが含まれます。
- HTTP環境変数の主な種類
- 以下の表に主な環境変数の名前とその概要を載せます。
環境変数名 |
概要の説明 |
例 |
HTTP_USER_AGENT |
ブラウザやOSの情報 |
Mozilla/4.0 |
HTTP_REFERER |
直前に見ていたページのアドレス |
http://alice/ |
REMOTE_ADDR |
クライアントのIPアドレス |
192.168.0.5 |
REMOTE_HOST |
クライアントのホスト名。ホスト名を持たない場合はIPアドレス |
xxxxxxx.docomo.ne.jp |
REQUEST_METHOD |
GET,POST,PUTなどのリクエスト形式 |
GET |
QUERY_STRING |
GET 形式のリクエストで,送られてくるデータ |
実際にこの後で試してみましょう。 |
CONTENT_LENGTH |
POST 形式のリクエストで,標準入力から送られてくるデータのバイト数 |
128 |
ここからはサーバ側の環境変数 |
SERVER_SIGNATURE |
WWW サーバの署名 |
Apache/2.x.xx Server at www.hs.cuc.ac.jp Port 80 |
SERVER_NAME |
WWW サーバのホスト名 |
www.hs.cuc.ac.jp |
SERVER_ADDR |
WWW サーバの IP アドレス |
202.xxx.xxxx.xxx |
- PerlによるHTTP環境変数の取得
- HTTP環境変数と連想配列変数
- Perlでは,HTTP環境変数をENV(ENVironment:環境の意)という名前の連想配列変数に格納します。
連想配列変数とは,データを連するキーワードをインデックスにする高級変数のことを言います。
例えば,41で紹介したREMOTE_ADDR変数などの内容は,ENVという連想配列変数に次のようなイメージで格納されています。
HTTP_USER_AGENT |
HTTP_REFERER |
REMOTE_ADDR |
REQUEST_METHOD |
Mozilla/4.0 |
http://www.hs.cuc.ac.jp/ |
192.168.0.2 |
POST |
連想配列変数は,"%変数名" と定義します。この場合,@ENV ということになります。
連想配列変数の参照方法
- 今回の @ENV の場合,例えばREMOTE_ADDRのデータをPerlで参照するには,
$ENV{'REMOTE_ADDR'}
とします。この結果をprintで出力すれば,192.168.0.2 の値が得られます。
実際に,前章で作成した mkhtml.cgi を改良して,ユーザーのIPアドレスを取得してみましょう。
xyzzyを起動し,【Web_local(L:)】→【cgi-bin】内のmkhtml.cgiを開く。
次の赤字のように内容を変更する。
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head><title>getIP</title></head>\n";
print "<body>\n";
print "投稿ありがとう<p>\n";
print "あなたのIPアドレスは,$ENV{'REMOTE_ADDR'}になります。\n";
print "</body>\n";
print "</html>";
exit 0; |
【名前を付けて保存】から, getIP.cgi という名前で保存する。
その後,つぎのように属性の変更を忘れない。
【マイコンピュータ】→【Web_local(L:)】→【cgi-bin】内のgetIP.cgiで右クリック。
【プロパティ】→【セキュリティ】で【Everyoneに読み取り実行権限】を許可する。
インターネットエクスプローラで確認すると,下のようにアクセスしたクライアントのIPアドレスが現れる。

|
  
|
|