解决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 相关文章推荐
JS URL传中文参数引发的乱码问题
Sep 02 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
Oct 22 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
vue resource post请求时遇到的坑
Oct 19 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
Dec 08 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
Jul 26 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
Node.js API详解之 readline模块用法详解
May 22 Javascript
我所理解的JavaScript中的this指向
Sep 04 Javascript
npm全局环境变量配置详解
Dec 15 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
php接口与接口引用的深入解析
2013/08/09 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
Prototype 工具函数 学习
2009/07/23 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
浅谈python之新式类
2018/08/12 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
销售员自我评价怎么写
2013/09/19 职场文书
《日月潭》教学反思
2014/02/28 职场文书
建房协议书
2014/04/11 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
2014年教学工作总结
2014/11/13 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis
在redisCluster中模糊获取key方式
2021/07/09 Redis