解决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 解析xml文件
Aug 09 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
jQuery ajax BUG:object doesn't support this property or method
Jul 06 Javascript
使用RequireJS库加载JavaScript模块的实例教程
Jun 06 Javascript
JSON字符串和对象相互转换实例分析
Jun 16 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 Javascript
Node.js实现文件上传的示例
Jun 28 Javascript
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
Vue.js中的高级面试题及答案
Jan 13 Javascript
基于vue实现简易打地鼠游戏
Aug 21 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/06/18 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
PHP7 标准库修改
2021/03/09 PHP
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
ptyhon实现sitemap生成示例
2014/03/30 Python
Python中的变量和作用域详解
2016/07/13 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
就业意向书范文
2014/04/01 职场文书
欢迎领导检查标语
2014/06/27 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
高中体育课教学反思
2016/02/16 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python