2011-11-12 19 views
-1

私のウェブサイトには、自分のサイトのサブセクションに移動できるドロップダウンコントロールがあります。ルートページで、ユーザーがサブサイトから到着したか、または自分のサイトの外部から到着したかを判断するために、HTTP_REFERER変数を取得します。JavaScriptのHTTPリファラー

選択したサイトにユーザーを誘導するように、このJavaScriptを使用して、ドロップダウンたち:

window.location.href(this.options[this.selectedIndex].value) 

これが動作しているように見えますが、何らかの理由で一部のブラウザでは信頼できないことが証明されています。場合によっては、ユーザーはドロップダウンからサブサイトを選択し、それを再度使用してルートサイトに戻り、驚くほどHTTP_REFERERが空であることがわかります。他のブラウザでは正常に動作します。

私は、HTTP_REFERER値が存在することを保証する私のドロップダウンリストで使用できるばかばかしくないクロスブラウザスクリプトを探しています。

ありがとうございました

+1

ほとんどのブラウザはリファラーを提供していますが、必須ではありません。さらに、それは決して「愚かな証拠」ではありません。クライアントは、特にJSでそれを偽造することができます。 – Brad

+1

'window.location.href'は**関数ではありません**。 – ComFreek

+0

関数ではありませんか?それを何と呼んでいますか? – ChiliYago

答えて

2

HTTPリファラーヘッダに依存しないでください。それは信頼できず、誰かが望むならそれをブロックすることができます。私は私の訪問者の情報を得るためにウェブサイトを防ぐために私のリファラーをブロックします。

+0

+1:あなたの最初の良い答えをお祝いします。) – ComFreek

+0

ありがとうございます@ComFreek – bnully

+2

HTTPリファラーが信頼されるべきではないことは間違いありませんが、これは本当に質問に答えません。 – NullUserException

0

Firefoxなどのブラウザユーザーがカスタマイズできる多くのオプションを持っている、あなたがウィキペディア上で読むことができるようので、これらのオプションの一つは、ウェブサイトにリファラを非表示にすることです:

http://en.wikipedia.org/wiki/HTTP_referrer

リファラ情報がことができるので、プライバシーを侵害すると、一部のWebブラウザではユーザーが参照元情報の送信を無効にすることができます。

ブラウザはデフォルトでリファラーを送信します。ユーザーはこれを無効にする必要があり、ユーザーはその操作を停止できません。

関連する問題