解决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 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
javascript 出生日期和身份证判断大全
Nov 13 Javascript
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
Jun 03 Javascript
vue.js+boostrap项目实践(案例详解)
Sep 21 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
Oct 07 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
Python高效编程技巧
2013/01/07 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python最长回文串算法
2018/06/04 Python
python 经典数字滤波实例
2019/12/16 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
公务员更新知识培训实施方案
2014/03/31 职场文书
青奥会口号
2014/06/12 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
电气工程师岗位职责
2015/02/12 职场文书
董事长岗位职责
2015/02/13 职场文书
会计稽核岗位职责
2015/04/13 职场文书
医院合作意向书范本
2015/05/08 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书