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() ?>で出力できる
添付画像にあるような形なのですが
どのようにすればできるのでしょうか
サンプルの形で教えて頂けると助かります
参考になるページでも結構です
よろしくお願いします
No.1ベストアンサー
- 回答日時:
サーバ(Apache)が受け取ったHTTPヘッダの内容と言うことですよね?
Apacheは、それを環境変数に入れてPerlを起動します。環境変数名は、ヘッダ名を全部大文字にして、ハイフンをアンダーバーに変え、その前に HTTP_を付けたものです。
つまり、X-Forwarded-By: であれば、$ENV{'HTTP_X_FORWARDED_BY'} になるはず。
環境変数一覧は、
#!/bin/sh
echo "Content-Type: text/plain
"
env
とかをCGIで動かすとわかります。
ご回答ありがとうございます
環境変数と、HTTPヘッダの関係が理解できていませんでした。
CGI含むサーバーサイドのアプリケーションは、apacheが整えた環境変数を
使用すれば良く、直接HTTPのヘッダから取る必要はない(もしくはできない)
という認識で良いでしょうか?
環境変数はご説明頂いた通り'HTTP_X_FORWARDED_BY'に変数名が変換されていたので
元々自分の欲しい変数名'X-Forwarded-By'はどこに行ったの?と思っていましたが
アプリ側では変換された'HTTP_X_FORWARDED_BY'をそのまま使用するか、自分の欲しい変数名に
再変換する必要があるのですね。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS 別サイトのHTML内にある情報を自動取得して、自分のサイトに組込む方法を教えてください。 例えば、Y 1 2023/06/15 08:09
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リストコントロールの列幅を固...
-
perlでHTTP Request Headersの...
-
メールをPDF化する際に、ヘッダ...
-
[C#]ListView一覧表示時の幅設...
-
PerlでのHTTPヘッダのStatus変更
-
SpreadDesignerの列ヘッダ
-
帯域計算について
-
Cookieを用いてのセッション管理
-
AccessVBAで「このフィールドに...
-
HTTPヘッダの大きさ
-
ソースの入れ方について(初心...
-
ヘッダーファイルのインクルー...
-
6月の第2 第4火曜日は何日...
-
DBを10件毎に表示ページング...
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
アンケートなどの1日1回の投...
-
VBA。複数のChangeイベントをま...
-
エクセルで相対パスの書き方を...
-
Consolidateメソッドの引数のSo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでExcelのヘッダーに文字列+...
-
[C#]ListView一覧表示時の幅設...
-
perlでHTTP Request Headersの...
-
AccessVBAで「このフィールドに...
-
ヘッダのinclude順
-
TCPヘッダのチェックサム算出方法
-
関数ヘッダ?
-
Content-type: text/htmlが表示...
-
レスポンスヘッダの出力方法
-
file_get_contents でリダイレ...
-
LinuxでRTPヘッダを作りたいの...
-
リストコントロールの列幅を固...
-
EXCEL:ヘッダー日付を年号で?...
-
SpreadDesignerの列ヘッダ
-
LWPでHTTPSサイトからコンテン...
-
HTTP 200 OKの後のリダイレクト?
-
C# クッキーを使ってウェブブ...
-
ftpでのネットワークバイトオー...
-
HTTPヘッダの取得方法
-
自作ヘッダファイルについて (C...
おすすめ情報