解决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 href的用法
May 13 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
JS实现同时搜索百度和必应的方法
Jan 27 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
node.js基础知识小结
Feb 26 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
vue实现鼠标经过动画
Oct 16 Javascript
JS document内容及样式操作完整示例
Jan 14 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
php实现的生成排列算法示例
2019/07/25 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python实现停车管理系统
2018/11/30 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
JAVA程序员面试题
2012/10/03 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
回门宴答谢词
2014/01/13 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
集中整治工作方案
2014/05/01 职场文书
优秀护士先进事迹
2014/05/08 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server