Perl(CGI)の環境変数「HTTP_REFERER」につきまして

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ムンバ

Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#1

投稿記事 by ムンバ » 15年前

こんばんは。お世話になります。

またまた、C言語とは関係ない質問で申し訳無いのですが…。(汗
相変わらず、Perl(CGI)の環境変数の質問をさせて頂けるサイトが見つかりません。
(2chは、私には無理です。すみません。)

添付させて頂いたCGIファイル内のソース
sub kankyohensu{

    foreach $date(sort keys %ENV){

        print "$date = $ENV{$date}

\n";
    }
}
で、全ての環境変数を取得し(実行して)表示する事はできたのですが
環境変数「HTTP_REFERER」(どのサイトから飛んできたのかを取得する環境変数)
が、全ての環境変数を取得する中に含まれていない(実行しても表示されない)ので

print "HTTP_REFERER = $ENV{'HTTP_REFERER'} のサイトから、こちらのサイトに来ました。

\n";

↑のソースを追加して実行したところ、実行時に取得した環境変数「HTTP_REFERER」の値は表示されました。

sub kankyohensu で全ての環境変数を取得できると思っていたのですが
全ての環境変数取得時に「HTTP_REFERER」は、取得できません。

何故、環境変数「HTTP_REFERER」の情報は、全ての環境変数を取得する上述のサブルーチン
(sub kankyohensu)内では、取得できないのでしょうか?

と言う質問をしたいのですが、どちらで質問して良いのか解りません。
検索の仕方が足りないのかもしれませんが、見つかりませんでした。
もし、詳しい方がいらっしゃいましたら
ご指導の程、宜しくお願いします。

toyo

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#2

投稿記事 by toyo » 15年前

私のローカルに入れたApache2.2とActiveperlではサブルーチン内でもちゃんと表示されました
最初はセキュリティソフトがブロックしてるのかなと思いましたが
print "HTTP_REFERER = $ENV{'HTTP_REFERER'} のサイトから、こちらのサイトに来ました。\n";
では表示されるんですよね
でも一度セキュリティソフトをオフにして確認してみてはどうでしょう

ムンバ

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#3

投稿記事 by ムンバ » 15年前

おはようございます。

toyoさん、早速のご解説ありがとうございます。
ローカルは、httpdでプロバイダのサーバーはApacheです。
帰宅次第、セキュリティソフトをオフにして確認してみます。
ありがとうございます。(謝

ムンバ

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#4

投稿記事 by ムンバ » 15年前

こんばんは。
toyoさん、すみません。帰宅遅くなりました。(_ _)

セキュリティソフトをオフにし
自鯖でも、お借りしてるサーバーでも試してみたのですが
サブルーチン内での表示(No:56191のソース)では、表示されませんでした。

>>print "HTTP_REFERER = $ENV{'HTTP_REFERER'} のサイトから、こちらのサイトに来ました。\n";
>>では表示されるんですよね

そうなんです。
個別には、どちらのサーバーでも表示できるんです。

自鯖のhttpdの設定で、制限がかかってて(カスタマイズ不足で)表示されないのか
プロバイダのサーバー(Apache)で表示されない様に制限がかかってるのかは解りません。
が、$ENV{'HTTP_REFERER'}単独では、値が表示されるのですよね。^^;

英語が苦手なもので、Apacheの導入を悩んでいたのですが
今回の疑問も含めまして、お試しにでもApache導入を検討してみたいと思います。

toyoさん、ご指導どうもありがとう御座いました。
少し検討する時間を下さい。
自分なりに今一度、調べてみたいと思います。

勝手ながら、一旦解決とさせて頂きます。(_ _)
また何かありましたら、ご指導の程、宜しくお願いします。
ありがとうございました。

---編集・追記---

すみません!
今、気づいたのですが、本当にすみません。
私の質問の内容が、不十分でしたので編集で追記させて頂きます。(謝

上述のサブルーチン内で、$ENV{'HTTP_REFERER'}の値が表示されない。
のではなく、HTTP_REFERER 自体が表示されないのです。
(ので、値も表示できない。)
つまり、添付させて頂いたファイルのサブルーチンを実行した場合に
全ての環境変数を取得できると思っていたのですが
実行しても

HTTP_REFERER =

↑これ自体が、表示されないのです。

すみません。うまく説明できて無くて申し訳有りませんでした。
解決後の編集、すみません。
自分なりに、がんばってみます。

PS:誤字脱字があったり、それを指摘してみたりされたりと
  変な意味は無く、難しいですね。^^
  今後とも、宜しくお願い致します。
  おやすみなさい。(∪。∪)。。。zzzZZ 画像

toyo

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#5

投稿記事 by toyo » 15年前

リファラ自体がないと表示されませんよ
HTTP_REFERERは常にあるわけではありません
URLをお気に入りやブックマークに登録してそこから飛んだ場合はHTTP_REFERERは作成されないので表示されません
リンクをクリックして飛んだときだけ作成されるのがHTTP_REFERER(リンク元のURL)です
http://localhost/cgi-bin/printenv.cgi
例えば↑をクリックしてとんだ場合HTTP_REFERERはこの掲示板のURLになります
ブラウザのアドレス欄に直接打ち込んだりお気に入りなどからアクセスした場合などリンク元が存在しないときはHTTP_REFERER自体が存在しません

編集:画像添付1 画像

toyo

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#6

投稿記事 by toyo » 15年前

こちらはリファラなしの画像です

ムンバ

Re:Perl(CGI)の環境変数「HTTP_REFERER」につきまして

#7

投稿記事 by ムンバ » 15年前

toyoさん、こんにちは。

詳しいご解説、並びに2つの添付ファイルどうもありがとうございます。
お手数おかけしました。(謝

>>リファラ自体がないと表示されませんよ
>>HTTP_REFERERは常にあるわけではありません
>>リンクをクリックして飛んだときだけ作成されるのがHTTP_REFERER(リンク元のURL)です

だから、表示されなかったのですね。
了解しました。
詳しくご解説頂いたおかげで理解する事ができました。

また何か御座いましたら、ご指導の程、宜しくお願いします。
本当にありがとうございました!
失礼します。

---編集・追記---
toyoさんへ
 帰宅して試してみました。出来ました!
 ありがとうございました。^^ 画像

閉鎖

“C言語何でも質問掲示板” へ戻る