在什么情况下HTTP_REFERER将为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在什么情况下HTTP_REFERER将为空相关的知识,希望对你有一定的参考价值。
我知道可以获得一个空的HTTP_REFERER。在什么情况下会发生这种情况?如果我得到一个空的,它是否总是意味着用户改变了它?获得一个空的一个与获得一个空的一样?在什么情况下我也能得到它?
当最终用户时它/可能是空的
- 在浏览器地址栏中输入了站点URL。
- 通过浏览器维护的书签访问该网站。
- 访问该网站作为窗口/选项卡中的第一页。
- 单击外部应用程序中的链接。
- 从https URL切换到http URL。
- 从https URL切换到其他https URL。
- 安装了安全软件(防病毒/防火墙/等),从所有请求中删除引用者。
- 在代理的后面,它从所有请求中删除引用者。
- 以编程方式访问该网站(如curl),而不设置引荐标头(searchbots!)。
HTTP_REFERER - 由浏览器发送,说明浏览器查看的最后一页!
如果您因任何重要原因信任[HTTP_REFERER],则不应该,因为它可以轻易伪造:
- 某些浏览器限制访问不允许传递HTTP_REFERER
- 在地址栏中键入地址不会传递HTTP_REFERER
- 打开一个新的浏览器窗口将不会传递HTTP_REFERER,因为HTTP_REFERER = NULL
- 有一些浏览器插件,出于隐私原因阻止它。一些防火墙和AV做到了。
试试这个firefox扩展,你就可以设置你想要的任何标题:
@Master of Celebration:
火狐:
扩展:refspoof,refontrol,modify headers,no-referer
完全禁用:该选项在about:config下的“network.http.sendRefererHeader”中可用,并且您希望将其设置为0以禁用引用传递。
谷歌chrome / Chromium:
扩展:noref,spoofy,external noreferrer
完全禁用:更改〜/ .config / google-chrome / Default / Preferences或〜/ .config / chromium / Default / Preferences并设置:
{
...
"enable_referrers": false,
...
}
或者只需将--no-referrers添加到快捷方式或cli中:
google-chrome --no-referrers
歌剧:
完全禁用:设置>首选项>高级>网络,然后取消选中“发送引荐来源信息”
欺骗网络服务:
独立过滤代理(欺骗任何标头):
使用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)
BalusC的名单很稳固。此字段经常显示为空的另一种方式是当用户位于代理服务器后面时。这类似于防火墙后面但略有不同,所以我想为了完整性而提及它。
如果使用新的Referrer Policy standard draft来防止将引用标头发送到请求源,它也将为空。例:
<meta name="referrer" content="none">
虽然Chrome和Firefox已经实现了推荐人政策的草案版本,但你应该小心,因为例如Chrome期望no-referrer
而不是none
(我在某处也见过never
)。
以上是关于在什么情况下HTTP_REFERER将为空的主要内容,如果未能解决你的问题,请参考以下文章
为啥 recyclerview$adapter 在片段中为空