解决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中哈希表的几种用法总结
Jan 28 Javascript
JavaScript中的对象序列化介绍
Dec 30 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
vue动态设置页面title的方法实例
Aug 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
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
Python二分查找详解
2015/09/13 Python
Python 探针的实现原理
2016/04/23 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python实现redis三种cas事务操作
2017/12/19 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python3 简单实现组合设计模式
2020/07/02 Python
德国团购网站:Groupon德国
2018/03/13 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
儿园租房协议书范本
2014/12/02 职场文书
入党转正申请书范文
2019/05/20 职场文书
2019邀请函格式及范文
2019/05/20 职场文书