解决js下referer兼容各大浏览器的方法


Posted in Javascript onNovember 03, 2014

HTTP Header referer这玩意主要是告诉人们我是从哪儿来的,就是告诉人家我是从哪个页面过来的,可以用于统计访问本网站的用户来源,也可以用来防盗链。获取这个东西最好的方式是js,如果在服务器端获取(PHP方法如:$_SERVER['HTTP_REFERER']) 不靠谱,人家可以伪造,用js获取最好,人家很难伪造,

方法:利用js的 document.referer 方法可以准确地判断网页的真实来路。 目前百度统计,google ads统计,CNZZ统计,都是用的这个方法。防盗链也很简单了,js里判断来路url如果不是本站不显示图片。

众所周知,我们web开发人员痛恨IE浏览器,因为IE不支持标准,标准外的默认行为又和其他浏览器经常不一致:

在IE中用javascript做跳转,比如用window.location.href = “”; google如果使用document.referrer无法取到浏览器请求的HTTP referrer,因为IE清空了

而其他主流浏览器Firefox和Chrome都会保留referrer,没办法,这意味着IE又要享受“部长级”特殊待遇了:

以下代码可以解决ie的这个问题:
//检测如果是ie浏览器,则手动的给增加一个referer
这样的原理就是给IE浏览器的页面偷偷加了个链接,然后自动点这个链接,于是referrer就能保留了。

var url = 'https://3water.com';   

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || /MSIE(\d+\.\d+);/.test(navigator.userAgent))   

{   

    var referLink = document.createElement('a');   

    referLink.href = url;   

    document.body.appendChild(referLink);   

    referLink.click();   

}   

else  

{   

    location.href = url;   

} 
Javascript 相关文章推荐
jQuery 改变CSS样式基础代码
Feb 11 Javascript
仿微博字符限制效果实现代码
Apr 20 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
Jun 02 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 #Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 #Javascript
一款基jquery超炫的动画导航菜单可响应单击事件
Nov 02 #Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 #Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 #Javascript
jQuery ajax serialize() 方法使用示例
Nov 02 #Javascript
js获取UserControl内容为拼html时提供方便
Nov 02 #Javascript
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php文件上传简单实现方法
2015/01/24 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
Python3中使用PyMongo的方法详解
2017/07/28 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
Linux的主要特性
2014/10/06 面试题
remote接口和home接口主要作用
2013/05/15 面试题
工程管理专业个人求职信范文
2013/12/07 职场文书
网络宣传方案
2014/03/15 职场文书
大学英语专业求职信
2014/06/21 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
优秀教研组申报材料
2014/12/26 职场文书
品质保证书格式
2015/02/28 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
文化大革命观后感
2015/06/17 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
幼儿园大班教学反思
2016/03/02 职场文书