12

ユーザーの訪問を記録するアプリケーションがあります。これらの訪問はいずれも直接アクセスされることはなく、これらの訪問の100%は別のサイトから参照されます。

私は$_SERVER['HTTP_REFERER']データベースに渡しています。ログに記録されたエントリの約35%がリファラーを通過し、残りは空白です。

これには理由がありますか?

4

6 に答える 6

18

HTTP_REFERER空白になる理由はいくつかあります。

  1. これはブラウザによって指定された環境変数であることを理解する必要があります。つまり、ユーザーは、必要に応じて、削除したり、変更したりすることができます。
  2. ブックマーク、履歴から、またはリンクを手動で入力してリンクにアクセスするユーザーには、リファラーがありません。
  3. IEは、JavaScriptを中心に展開する状況でリファラーを削除することも知られています。window.open、、さらにはアンカーやのwindow.location設定など。target="_blank"meta refresh
  4. チャットアプリケーションの埋め込みリンクであるPDF/Word / Excelドキュメントをクリックしても、リファラーは設定されません。
  5. 他の言語でAJAX、、および他の同様の関数を使用してfile_get_contentsfopen、おそらくリファラー要求は設定されません。
  6. cURL、fsockopen、ブラウザのようなコンポーネントを持つアプリケーションは、リファラーを設定しない場合があります。

これが発生する可能性のある状況はおそらくもっとあるでしょう。合理的と思われることがあれば更新します。

于 2011-04-13T02:53:21.997 に答える
9

ユーザーがサイトに直接アクセスした場合、リファラーはありません。また、ブラウザがリファラーを送信しないように設定している可能性もあります。

この回答によると、ブラウザはメタリフレッシュを行うときに必ずしもリファラーを送信するわけではありません。

于 2011-04-13T02:33:46.627 に答える
1

ブラウザがリクエストにを含める場合があります。refererただし、これは必須ではありません(referer100%任意です)。referer実際、 (HTTPSサイトがHTTPサイトを参照している場合、ブラウザは参照元サイトをとして含めないでください)を取り巻くさまざまなプライバシーとセキュリティの問題がありますreferer。したがって、それに依存しないでください。

于 2011-04-13T02:37:05.283 に答える
1

Internet Explorer 4.0以降で1つのドキュメントから別のドキュメントにリンクする場合、HTTPSページから非HTTPSページへのリンクの場合、Refererヘッダーは送信されません。リンクがfile://などの非HTTP(S)プロトコルから別のページにある場合も、Refererヘッダーは送信されません。詳細については、このリンクにアクセスしてください

于 2014-12-25T14:25:58.143 に答える
0
  1. ページへの直接アクセス(アドレスバーにURLを入力するか、ブックマーク、履歴などから)
  2. ブラウザの設定(リファラーが無効または空)
  3. 誰かがfile_get_contents()関数を使用してページコンテンツを要求した場合...
于 2011-04-13T02:40:23.790 に答える
0

なぜそれが欠落しているのかを見つけるのに行き詰まっている場合はよくあることです:-リファラーがhttpsであり、httpを使用している場合、それは失われます。

それ以外の場合:-URLを直接入力してアクセスするユーザー。-ユーザーがブックマークを付けており、ブックマークからアクセスしています。-ユーザーがブラウザのURLをデフォルトのままにする場合があります(ブックマークと同様)-プロキシサーフィンでリファラーが削除される場合があります。-ボットとしてWebサイトにアクセスする(検索エンジン)

于 2016-09-26T15:42:08.943 に答える