web-dev-qa-db-ja.com

どのような場合にHTTP_REFERERは空になります

空のHTTP_REFERERを取得することは可能です。これはどのような状況で起こりますか?空のものを取得した場合、常にユーザーが変更したということですか?空のものを取得することは、空のものを取得することと同じですか?そして、どのような状況で私もそれを手に入れますか?

143
sameold

エンドユーザーが

  • ブラウザのアドレスバー自体にサイトのURLを入力しました。
  • ブラウザが管理するブックマークによってサイトにアクセスしました。
  • ウィンドウ/タブの最初のページとしてサイトにアクセスしました。
  • 外部アプリケーションのリンクをクリックしました。
  • https URLからhttp URLに切り替えられました。
  • https URLから別のhttps URLに切り替えられました。
  • すべてのリクエストからリファラーを削除するセキュリティソフトウェア(アンチウイルス/ファイアウォール/など)がインストールされています。
  • すべてのリクエストからリファラーを取り除くプロキシの背後にあります。
  • リファラーヘッダー(searchbots!)を設定せずに、プログラムで( curl などの)サイトにアクセスした。
243
BalusC

HTTP_REFERER-ブラウザによって送信され、ブラウザが表示した最後のページを示します!

重要な何らかの理由で[HTTP_REFERER]を信頼している場合は、簡単に偽造できるため、そうすべきではありません。

  1. 一部のブラウザは、HTTP_REFERERを許可しないようにアクセスを制限します
  2. アドレスバーにアドレスを入力すると、HTTP_REFERERは渡されません。
  3. hTTP_REFERER = NULLであるため、新しいブラウザウィンドウを開いてもHTTP_REFERERは渡されません。
  4. プライバシー上の理由でブロックするブラウザアドオンがあります。一部のファイアウォールとAVはそうします。

このFirefox拡張機能を試してください。必要なヘッダーを設定できます。

@Master of Celebration:

Firefox:

拡張子:refspoofrefontrolヘッダーの変更no-referer

完全に無効にします:「network.http.sendRefererHeader」の下のabout:configでオプションを使用できます。これを0に設定して、リファラーの受け渡しを無効にします。

Google chrome/Chromium:

拡張子:norefspoofyexternal noreferrer

完全に無効にします:Chnage〜/ .config/google-chrome/Default/Preferencesまたは〜/ .config/chromium/Default/Preferencesを設定し、これを設定します:

{
   ...
   "enable_referrers": false,
   ...
}

または単に--no-referrersをショートカットまたはcliに追加:

google-chrome --no-referrers

オペラ:

完全に無効にします:[設定]> [設定]> [詳細]> [ネットワーク]、[リファラー情報を送信]のチェックを外します

スプーフィングWebサービス:

http://referer.us/

スタンドアロンフィルタリングプロキシ(ヘッダーのスプーフィング):

Privoxy

wget使用時のhttp_refererのなりすまし

「--referer = url」

curl使用時のhttp_refererのなりすまし

-e、-referer

telnetを使用したhttp_refererのなりすまし

telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
30
ThatGuy

BalusCのリストは堅実です。ユーザーがプロキシサーバーの背後にいる場合、このフィールドが頻繁に空に見えるもう1つの方法があります。これはファイアウォールの背後にあるのと似ていますが、少し異なるため、完全を期すために言及したいと思います。

9
Night Owl

また、新しい Referrer Policy standard draft を使用して、リファラーヘッダーがリクエストOriginに送信されないようにする場合も空になります。例:

<meta name="referrer" content="none">

ChromeおよびFirefoxはリファラーポリシーのドラフトバージョンを既に実装していますが、たとえばChromeはnoneではなくno-referrerを想定しているため、注意が必要です。 (そして、どこかでneverも見ました)。

6
Joel Richard

ブラウザーのリファラーの実装には、実際には一貫性がないことがわかりました。

たとえば、「download」属性を持つアンカー要素はSafariで正常に機能し、リファラーを送信しますが、Chromeでは、リファラーは空またはWebサーバーログで「-」になります。

<a href="http://foo.com/foo" download="bar">click to download</a>

Chromeで破損しています-リファラーが送信されていません。

0
jmoz