今日の聞いてないよ HTTP_REFERER

今日はHTTPのリファラーで接続元を

判断して表示するプログラムを作っていました。

が。。。明らかに直リンではなく、リンク元はページにのせたリンクを

クリックしてるはずなのに。。リファラーが取れない。

構成はこんな感じ

① http://リンク元ページ.html  リンク先へのリンクンクをクリック

  ↓

② http://リンク先ページ.html

 

と、なんの変哲も無いハイパーリンクです。

リファラーって偽造もできるし100%ではないとは聞いていたけど

こんなにいいかげんなんだっけ?自分はなにもしてないのに。

、と思いつつ

PHPで var_dump() しても$_SERVER['HTTP_REFERER']の値がありません、、え”っ、

小一時間はまったところ実際は下記のような動作を

していました。 

 

① http://リンク元ページ.html  リンク先へのリンクンクをクリック

  ↓

② リダイレクト

  ↓

③ https://SSLページ.html

  ↓

④ リダイレクト ←ここがキモ

  ↓

⑤ http://リンク先ページ.html

これが何を悪さしてるかというとですね、

確認をMac Safari3, Win FireFox3, Win IE6

で確認したところ

SSLからHTTPへのページ遷移ではリファラーを渡さない

仕様だったようで、リンク先でセッションとか使っていた自分は

まったく気づかなかった訳です。

リファラーはブラウザがリクエストヘッダに入れるものですので

サーバ(Apache)はまったく疑わず

一生懸命セッションを疑ってましたから。

まぁ途中のリダイレクトも気づいてませんでしたけどね。(^^;;

たぶんIE7もそうなんでしょうね

そういえばリファラー利用したのは初めてかも。

ブラウザの動作を規定したHTTP1.1のような規格ってないんでしょうか?

こういうハマリをよくするのでわたくし、

ページ遷移にリダイレクトはあまり使いません。

Leave a Comment