javascript操作referer详细解析

时间: 作者:目于

  

[javascript,referer]javascript操作referer详细解析

  

Referrer的重要性  
HTTP请求中有一个referer的报文头,用来指明当前流量的来源参考页。例如在上点击一个链接到达cctv.com首页,那么就referrer就是了。在Javascript中,我们可以通过document.referrer来获取同样的信息。通过这个信息,我们就可以知道访客是从什么渠道来到当前页面的。这对于Web Analytics来说,是非常汇盛国际开户重要的,这可以告诉我们不同渠道带来的流量的分布情况,还有用户搜索的关键词等,都是通过分析这个referrer信息来获取的。

  

  

但是,出于各种各样的原因,有时候Javascript中读到的referrer却是空字符串。下面总结一下哪些情况下会丢失referrer。

  

  

修改Location对象进行页面导航  
Location对象是一个用于页面导航的非常实用的对象。因为他允许你只变更Url的其中一部分。例如从cn域名切换到com域名,其他部分不变:  
代码如下:

  
window.location.hostname = "example.com";  
  
但是,通过修改Location进行页面导航的方法,会导致在IE下丢失Referrer。

  

  

IE5.5+ 下返回空字符串  

  

Chrome3.0+,Firefox3.5,Opera9.6,Safari3.2.2均正常返回来源网页  

  

window.open方式打开新窗口  
示例:  
代码如下:

  
访问Google  
  
点击此链接会在新窗口打开Google网站,我们在地址栏中输入以下js代码就可以看到发送的referrer了。

  
代码如下:

  
javascript:alert(document.referrer)  
  
测试结果:  

  

IE5.5+ 下返回空字符串  

  

Chrome3.0+,Firefox3.5,Opera9.6,Safari3.2.2均正常返回来源网页  

  

如果是同个域名下通过此方式跳转的,那么我们可以通过访问windoww.opener对象去获取丢失的referrer信息。代码如下:  
代码如下:

  
  
var referrer = document.referrer;  
if (!referrer) {  
try {  
if (window.opener) {  
// IE下如果跨域则抛出权限异常  
// Safari和Chrome下window.opener.location没有任何属性  
referrer = window.opener.location.href;  
}  
}  
catch (e) {}  
}  
  
  
跨域的话则没辙了~  

  

鼠标拖拽打开新窗口  
鼠标拖拽是现在非常流行的用户习惯,很多浏览器都内置或者可以通过插件的方式来支持鼠标拖拽式浏览。但是通过这种方式打开的页面,基本全都丢失referrer。并且,这种情况下,也无法使用window.opener的方式去获取丢失的referrer了。

  

  

已测试:  

  

Maxthon2.5.2,Firefox的FireGesture插件,Chrome3.0+,Opera9.6,Safari3.2。

  

  

点击Flash内部链接  
点击Flash上到达另外一个网站的时候,Referrer的情况就比较杂乱了。

  

  

IE下,通过客户端Javascript的document.referrer读取到的值是空的,但是如果你使用流量监控软件看一下的话,你会发现,实际上HTTP请求中的Referer报文头却是有值的,这可能是IE实现的Bug。同时,这个值指向的是Flash文件的地址,而不是来源网页的地址。

  

  

Chrome4.0下点击Flash到达新窗口之后,Referrer也是指向的Flash文件的地址,而不是源网页的地址。

  

  

Chrome3.0和Safari3.2是一样的,都是会丢失Referrer信息。

  

  

Opera则和Firefox一样,Referrer的值都是来源网页的地址。

  

  

HTTPS跳转到HTTP  
从HTTPS的网站跳转到HTTP的网站时,浏览器是不会发送referrer的。这个各大浏览器的行为是一样的。

  

  

例如,我们在HTTPS下使用Google Reader或是Gmail的时候,点击某个链接去到另外一个网站,那么从技术上来说,这样的访问和用户直接键入网址访问是没有什么分别的。

  

  

Referrer丢失对于广告流量监控的影响  
Referrer如果丢失,Web Analytics就会丢掉很重要的一部分信息了,特别对于广告流量来说,就无法知道实际来源了。目前国内好多用了Google Adsense广告的网站,都使用了window.open的方式来打开广告链接,因此IE下会丢失Referrer,而我们知道,IE是目前市场份额最大的浏览器,因此其影响是很大的。很多流量统计工具会因此将这部分流量归入“直接流量”,和用户直接键入网址等价了。 (责任编辑:admin)

推荐图片Related

相关文章Related

查看更多热门新闻


首页 | 特效插件 | 常用代码 | 样式素材 | 脚本代码 | css特效

Copyright © 2017-2018 汇盛国际 版权所有

系统要求:本站自适应各终端浏览器分辨率

请使用Google、Firefox、IE9、百度浏览器登录网站

网站地图 | RSS订阅 | 汇盛国际平台