ユーザーの訪問を記録するアプリケーションがあります。これらの訪問はいずれも直接アクセスされることはなく、これらの訪問の100%は別のサイトから参照されます。
私は$_SERVER['HTTP_REFERER']
データベースに渡しています。ログに記録されたエントリの約35%がリファラーを通過し、残りは空白です。
これには理由がありますか?
HTTP_REFERER
空白になる理由はいくつかあります。
window.open
、、さらにはアンカーやのwindow.location
設定など。target="_blank"
meta refresh
file_get_contents
もfopen
、おそらくリファラー要求は設定されません。これが発生する可能性のある状況はおそらくもっとあるでしょう。合理的と思われることがあれば更新します。
ユーザーがサイトに直接アクセスした場合、リファラーはありません。また、ブラウザがリファラーを送信しないように設定している可能性もあります。
この回答によると、ブラウザはメタリフレッシュを行うときに必ずしもリファラーを送信するわけではありません。
ブラウザがリクエストにを含める場合があります。referer
ただし、これは必須ではありません(referer
100%任意です)。referer
実際、 (HTTPSサイトがHTTPサイトを参照している場合、ブラウザは参照元サイトをとして含めないでください)を取り巻くさまざまなプライバシーとセキュリティの問題がありますreferer
。したがって、それに依存しないでください。
Internet Explorer 4.0以降で1つのドキュメントから別のドキュメントにリンクする場合、HTTPSページから非HTTPSページへのリンクの場合、Refererヘッダーは送信されません。リンクがfile://などの非HTTP(S)プロトコルから別のページにある場合も、Refererヘッダーは送信されません。詳細については、このリンクにアクセスしてください
なぜそれが欠落しているのかを見つけるのに行き詰まっている場合はよくあることです:-リファラーがhttpsであり、httpを使用している場合、それは失われます。
それ以外の場合:-URLを直接入力してアクセスするユーザー。-ユーザーがブックマークを付けており、ブックマークからアクセスしています。-ユーザーがブラウザのURLをデフォルトのままにする場合があります(ブックマークと同様)-プロキシサーフィンでリファラーが削除される場合があります。-ボットとしてWebサイトにアクセスする(検索エンジン)