2009-05-25 15 views
2

私はfoo.phpのiframeを特定のURLにするかどうかを決定するためにfoo.phpの前にreferrerを使用しました。では、HTTP_REFERERはどのような状況で機能しませんか?

$_SERVER['HTTP_REFERER']を使用して)それは時間のほとんどは、それが(時間の約98%)を働いたことが判明したが、一部のユーザーがページを到着し$_SERVER['HTTP_REFERER']がfoo.phpに設定されたので、壊れていなかったようにそれにも見えましたコード。 [update:これらのユーザーは、通常のページフローに従い、foo.phpのURLをブラウザ上で単独で使用しない(iframeにする)と、ユーザーがブラウザ設定を変更していないと主張していました。 ]

私はなぜそれが起こる可能性があるのだろうか?

答えて

1

デフォルトでは設定されていませんが、AFAIKはオフにするのは簡単です(プライバシー用など)。 about:configを介してFirefoxで、そして確かに、そのような種類の設定で(例えば、彼らのIT部門によって)彼らに配布されたブラウザを使用することができるユーザーもいます。したがって、重要な機能についてREFERERに頼るのを避けてください(もちろん、間違って綴られているため);-)。

6

HTTP/1.1 RFCは、HTTPリファラーヘッダを送信する必要はありません。堅牢なコードを書くときは、その存在について何も仮定することはできません。完全コンソーシアムのブラウザにはそれを含めることはできません。

Moreoever、RFCは「は「リクエストURIは、ユーザのキーボードからの入力として、自身のURIを持たないソースから入手した場合リファラーフィールドを送ってはいけません」というアドバイス、および我々は、必要ではないが、FromとRefererの情報 ""の送信を有効または無効にするための便利なトグルインタフェースを提供することを提案する。

後者はあまり一般的ではありません(一部のブラウザでは、要件を満たす「プライベート」モードがあります)。あなたの2%は、最初の基準(URIなしのソースから取得したURI)を満たすURLをブックマークしているので、ブラウザはリファラーを送信しません。

関連する問題