初识HTTP中的Referer

来源:百度文库 编辑:神马文学网 时间:2024/04/29 08:16:58

OurApache

  • Home
  • 关于
我们致力于一个Apache知识的分享网站

 

初识HTTP中的Referer


 

这段时间的一个项目中需要记录PV级的用户访问信息,为了让这个功能实现尽量和现在系统代码少耦合,所以采用了在前端页面嵌入js的方案,被记录的信息中有一条就是:被访问页面的来源URL,也即从哪个页面跳转过来的;

HTTP Referer就是用来干这件事的,该值在服务端和客户端都能取到;服务端直接从request中读取,当然不同语言读取的方式不一样;客户端js的读取方式为document.referrer;

关于HTTP Referer使用非常简单,使用场合比较多的是用于页面统计、图片防盗链(可以在apache中进行设置,从非自己domain或空Referer过来的请求一律拒绝)等;但还是有一点值得注意:Referer是不安全的,客户端可以通过设置改变Request中的值,尽量不要用来进行安全验证等方面.

下面介绍下默认情况下Referer可能出现为空的场景:

1、页面从Https跳转到Http;应该是处于安全考虑,该点在RFC-2616中有说明;主流浏览器均遵守这个规则,比如IE、FF;但默认情况下Https到Https是会发送Referer的;

2、直接在浏览器中输入目标URL;

3、由于FF提供了很强大的自定义参数设置功能,所以我们可以通过about:config页面修改以下两个选项的默认设置:

network.http.sendRefererHeader (default=2)
设置Referer的发送方式,0为完全不发送,1为只在点击链接时发送,在访问页面中的图像什么的时候不发送,2为始终发送。

network.http.sendSecureXSiteReferrer (default=true)
设置从一个Https访问到另外Https页面的时候是否发送Referer,true为发送,false为不发送。