dポイントプレゼントキャンペーン実施中!

perlでHTTP Request Headersの情報を取得、表示するページを作成したい

当方初心者です。
apache上のCGI(perl)で、ブラウザから受け取った
HTTP Request Headersの情報を取得、出力するページを作成したいのです。

調べると下記のようなサーバ環境変数の取得、表示方法は多数ヒットするのですが
===================================================
#!/usr/bin/perl --
print << "DOC1";
Content-type:text/html\n\n
<HTML><BODY>
DOC1

print $ENV{'HTTP_USER_AGENT'}<br>\n";
print $ENV{'REMOTE_ADDR'}";

print << "DOC2";
</BODY></HTML>
DOC2
===================================================
今回は、環境変数からではなく、HTTP Request Headersから
直接ヘッダに格納された情報を取得したいのです

取得・表示したい情報は標準HTTPヘッダ情報に加え、
途中で経由するプロキシが追加するヘッダ情報です。

完成イメージとしては
PHPの<? phpinfo() ?>で出力できる
添付画像にあるような形なのですが

どのようにすればできるのでしょうか
サンプルの形で教えて頂けると助かります
参考になるページでも結構です

よろしくお願いします

「perlでHTTP Request He」の質問画像

A 回答 (1件)

サーバ(Apache)が受け取ったHTTPヘッダの内容と言うことですよね?


Apacheは、それを環境変数に入れてPerlを起動します。環境変数名は、ヘッダ名を全部大文字にして、ハイフンをアンダーバーに変え、その前に HTTP_を付けたものです。

つまり、X-Forwarded-By: であれば、$ENV{'HTTP_X_FORWARDED_BY'} になるはず。

環境変数一覧は、
#!/bin/sh
echo "Content-Type: text/plain
"
env
とかをCGIで動かすとわかります。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます
環境変数と、HTTPヘッダの関係が理解できていませんでした。

CGI含むサーバーサイドのアプリケーションは、apacheが整えた環境変数を
使用すれば良く、直接HTTPのヘッダから取る必要はない(もしくはできない)
という認識で良いでしょうか?

環境変数はご説明頂いた通り'HTTP_X_FORWARDED_BY'に変数名が変換されていたので
元々自分の欲しい変数名'X-Forwarded-By'はどこに行ったの?と思っていましたが
アプリ側では変換された'HTTP_X_FORWARDED_BY'をそのまま使用するか、自分の欲しい変数名に
再変換する必要があるのですね。

ありがとうございました

お礼日時:2010/07/25 01:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A