2011-07-20 16 views
4

私はログインページを持っており、異なるドメインのユーザーはSSOの目的でこのページにリダイレクトされます。私は、ユーザーがどこから来たのかを知るためにreferrer HTTP Headerフィールドを使用します。したがって、ログインに成功すると、元のドメインに戻ります。 しかし、私のリファラーは設定されていない場合もあれば、設定されている場合もあります。どうして?ブラウザがHTTPリクエストヘッダに「リファラー」を設定していますか?

答えて

11

ユーザーは異なる方法を使用して、あなたのページに来ることができます。

  1. 直接ブラウザ
  2. のアドレスバーに、あなたのページのURLを入力することにより、別のサイトから自分のサイトへのリンクをクリックすると
  3. お使いのブラウザの戻る/進むボタンをナビゲートすることにより
  4. (バックあなたのサイトへのPOSTリクエストを送信する)あなたのサイト上のフォームを提出することによって
  5. 現在のページをリロードすることによって
  6. 前のページから現在のページにリダイレクトされます。

ブラウザーでは、参照元ヘッダーフィールドの設定方法とタイミングが実際とは異なります。しかし、一般的なルールとして、リンクのクリックやフォームの提出(リクエスト後)で、参照元フィールドを設定することができます。また、リダイレクトやリンク経由で現在のページにアクセスした場合でも、ブラウザーはF5(リロード)でリファラーヘッダーを保持します。

リファラーフィールドが空であることがわかったら、誰かがあなたのログインページのURLを知っていてそれをアドレスバーに直接入力するか、誰かがそれをブックマークしているので、GETリクエストを送信するからです。

通常、参照元フィールドはコントロールの外にあるため、必ずしもそのフィールドを期待する必要はありません。それらはあなたのコントロール下にあるので、クッキーまたはクエリ文字列を使用する必要があります。

+0

良い点です。ありがとうございました –

+1

ユーザーがブラウザの機能を無効にしていない限り、@「あなたは確信できます」と表示されます。 – Qtax

4

もう1つは、ブラウザのセキュリティ設定の一部として、ブラウザでrefererオプションが無効に設定されていることがあります。

関連する問題