初识HTTP中的Referer
2008-08-08 14:01
155 查看
这段时间的一个项目中需要记录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为不发送。
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为不发送。
相关文章推荐
- 初识http之referer字段
- HTTP Referer简单说明
- 如何用PHP有效的伪造HTTP_REFERER
- http请求的referer属性
- Http协议之Referer
- http 协议中得 referer
- asp Http_Referer,Server_Name和Http_Host
- XMLHttpRequest(Ajax)不能设置自定义的Referer
- android 6.0 以下的 MediaPlayer 居然不能携带 http headers Referer
- HTTP_REFERER 防盗链
- HTTP的referer机制
- HTTP_REFERER的获取情况
- 初识HTTP协议--请求与响应报文
- 初识HTTP协议(二)
- 转载:探密诡异的HTTP Referer总是为空的原因
- HttpWebRequest.Referer 设置或获取来自搜索引擎的网址
- 什么是HTTP Referer
- HTTP Live Streaming 直播(iOS直播) 初识
- [php]referer应用--http防盗链技术
- nginx 根据http_referer来跳转