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


163

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


8
クライアントが送信しない場合。
Ignacio Vazquez-Abrams

回答:


276

エンドユーザーがいる場合は空になります

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

32
「ユーザーが安全な(HTTPS)ページから安全でないページに移行するとき」を追加することができます。
John Pick

4
「ウィンドウ/タブの最初のページとしてサイトにアクセスしました。」リンクをクリックして新しいウィンドウ/タブで開いた場合でも、本気ですか?それはブラウザの非常に間違った振る舞いになるでしょう
matteo

この
例外

4
「https URLから別のhttps URLに切り替えられました」。あなたはこれについて確信を持っていますか?:\
オスカーメデロス2016年

5
デフォルトでは、HTTPS URLから別のHTTPS URLに切り替えると、完全なリファラーが設定されます。ただし、このデフォルトポリシーは上書きできます。w3.org/TR/referrer-policy
Dhaval Kapil

34

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

重要な理由で[HTTP_REFERER]を信頼している場合は、簡単に偽装できるため、信用しないでください。

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

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

@マスターオブセレブレーション:

Firefox:

拡張: refspoofrefontrolヘッダーの変更リファラーなし

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

Google Chrome / Chromium:

拡張: norefspoofy外部noreferrer

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

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

または、単に--no-referrersをショートカットまたはcliに追加します。

google-chrome --no-referrers

オペラ:

完全に無効化: [設定]> [設定]> [詳細設定]> [ネットワーク]をクリックし、[参照URL情報を送信する]チェックボックスをオフにします

Webサービスのなりすまし:

http://referer.us/

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

プリヴォキシ

wget使用時のhttp_refererのスプーフィング

'--referer = url'

curl使用時のhttp_refererのスプーフィング

-e、-referer

なりすましhttp_referer wth telnet

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)

Tamper Dataは、リファラー値の変更を試したい場合に一見の価値があるもう1つのFirefox拡張機能です。
Chris Hepner、2011

名前を覚えるのに一生懸命頑張っていました。しかし、私の記憶は私を裏切った。ありがとう:)
ThatGuy

@nix Some browsers limit access to not allow HTTP_REFERER to be passedそのようなブラウザや拡張機能の例を挙げていただけませんか?
マスターオブセレブレーション

@MasterofCelebrationは、私の回答にhttp_refererを偽装する方法を追加しました。
ThatGuy

referer.usを使用してリファラーを偽装/非表示にしないでください!それは動作しませんし、あなたの情報をリークします。現在、唯一の機能しているサービスは、この無料の非表示リファラーサービスです。
ブライアン・スミス

9

BalusCのリストはしっかりしています。このフィールドが空であることがよくあるもう1つの方法は、ユーザーがプロキシサーバーの背後にいる場合です。これはファイアウォールの背後にあるのと似ていますが、少し異なるため、完全を期すために触れておきます。


8

新しいリファラーポリシーの標準ドラフトを使用してリファラーヘッダーが要求元に送信されないようにする場合も、空になります。例:

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

ChromeとFirefoxがすでにリファラーポリシーのドラフト版を実装しているが、例えばクロムが期待するので、あなたはそれに注意しなければならないno-referrer代わりにnone(と私も見てきましたneverどこか)。


ブラウザの互換性テーブル:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/...
djvg

0

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

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

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

Chromeで壊れています-リファラーは送信されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.