2011-07-30 116 views
119

我知道可以获得一个空的HTTP_REFERER。在什么情况下会发生?如果我得到一个空的,是否意味着用户改变了它?获得一个空的一样得到一个空的一个?在什么情况下我也可以得到这些?在什么情况下HTTP_REFERER将为空

+8

当客户端不发送一个。 –

回答

201

它将/可能是空的,当终端用户

  • 进入了浏览器地址栏中本身的网站的网址。
  • 通过浏览器维护的书签访问该网站。
  • 作为窗口/选项卡中的第一页访问该网站。
  • 从https URL切换到http URL。
  • 从https网址切换到另一个https网址。
  • 已安装安全软件(防病毒/防火墙/等),从所有请求中删除引荐来源。
  • 是一个代理服务器,它从所有请求中剥离引用者。
  • 以编程方式访问该站点(如,curl),而不设置引用标头(searchbots!)。
+22

您可能想要添加“当用户从安全(HTTPS)页面转换为不安全页面时”。 –

+4

“作为窗口/标签中的第一页访问了该网站。”即使是通过点击链接并在新窗口/选项卡中打开它?你确定?这将是一个非常错误的浏览器行为 – matteo

+0

也可以在这里http://stackoverflow.com/questions/21922143/why-isnt-the-referral-removed-for-google-https-http免除这 – GetFree

26

HTTP_REFERER - 由浏览器发送,指出浏览器查看的最后一页!

如果您信任[HTTP_REFERER]任何原因,重要的是,你不应该的,因为它可以很容易地伪造:

  1. 一些浏览器限制不允许HTTP_REFERER传递
  2. 类接入在地址栏的地址,将无法通过HTTP_REFERER
  3. 打开一个新的浏览器窗口将不会通过HTTP_REFERER,因为HTTP_REFERER = NULL
  4. 有一些浏览器插件,阻止它隐私的原因。一些防火墙和AVs会这样做。

试试这个Firefox扩展,你可以设置你想要的任何标题:

@Master庆典:

火狐:

扩展:refspoofrefontrol,modify headers, no-referer

完全禁用:此选项在“network.http.sendRefererHeader”下的about:config中可用,并且您希望将其设置为0以禁用引用者传递。

谷歌浏览器/铬:

扩展:norefspoofyexternal noreferrer

完全禁用: Chnage〜/的.config /谷歌铬/默认/首选项或〜/。 config/chromium/Default/Preferences并设置为:

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

或者干脆添加--no-引荐快捷方式或CLI:

google-chrome --no-referrers 

歌剧:

完全禁用:设置>首选项>高级>网络,并取消选中“发送引荐信息”

欺骗Web服务:

http://referer.us/

独立过滤代理(欺诈任何报头):

Privoxy

欺骗使用wget

当HTTP_REFERER '--referer = URL'

欺骗http_referer使用curl时

-e,--referer

欺骗HTTP_REFERER问心无愧的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) 
+0

[篡改数据](https://addons.mozilla.org/en-US/firefox/addon/tamper-data/)是另一个Firefox扩展,如果您想要更改引荐来源值,那么值得一看。 –

+0

我真的很难记住它的名字。但我的记忆背叛了我。谢谢:) – ThatGuy

+0

@nix'一些浏览器限制访问不允许HTTP_REFERER被传递'您能否给这个浏览器和/或扩展命名一个例子? –

8

BalusC的名单是固体。此字段经常出现空白的另一种方式是当用户位于代理服务器后面时。这与防火墙相似,但略有不同,所以为了完整起见,我想提及它。

3

如果使用新的Referrer Policy standard draft来防止将referer头部发送到请求源,它也将为空。例如:

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

虽然Chrome和Firefox已经实施引荐政策的草稿版本,你应该小心,因为例如铬预计no-referrer而不是none(我也看到某处never)。

相关问题