HTTP_REFERER ~どこからやってきたの?~

HTTP_REFERER は、リンク元の URL が入ってきます。 したがって、あなたの CGI に何処のリンクからたどってアクセスしてきたかを調査することができます。

HTTP では、Referer の送信に関してはオプションと定義していますので、すべてのブラウザーが必ず送信するとは限りません。 しかし、ほとんどのメジャーなブラウザーは、Referer を送信しているようです。

Perl スクリプトでは Referer を $ENV{'HTTP_REFERER'} で取得することができます。 しかし、CGI に対して直接 URL をブラウザーに打ち込みアクセスすると、この変数には何もデータが入りません。

次のボタンを押して Referer を確認してみてください。

Referer を確認

このページの URL が表示されるはずです。

http://www.futomi.com/env_var/http_referer.html

次に、ブラウザーを終了し、再度ブラウザーを起動してください。そして、アドレス欄に直接上記の URL を入力してアクセスしてみてください。Referer には何も表示されないはずです。

なお、実験で使った referer.cgi のソースは、以下のとおりです。

#!/usr/bin/perl
print 'Content-type: text/plain; charset=utf-8' . "\n";
print "\n";
print 'あなたは ' . $ENV{'HTTP_REFERER'} . ' からアクセスしました。';
exit;