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

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

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

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

ここをクリックして、Refererを確認してみてください。ここのページのURLが表示されるはずですね。( http://www.futomi.com/env_var/http_referer.html )

次に、ブラウザーを終了し、再度ブラウザーを起動して下さい。そして、アドレス欄に直接 

http://www.futomi.com/lecture/env_var/exec/referer.cgi

を打ち込んでアクセスしてみてください。すると、Refererには何も表示されませんね。

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

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "あなたは、$ENV{'HTTP_REFERER'} からアクセスしました\n";