解决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 instanceof 与typeof使用说明
Jan 11 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
Dec 25 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
javascript模拟命名空间
Apr 17 Javascript
AngularJS 基础ng-class-even指令用法
Aug 01 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
浅谈vuex之mutation和action的基本使用
Aug 29 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
js实现小时钟效果
2020/03/25 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
在Python程序中操作MySQL的基本方法
2015/07/29 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Python flask框架端口失效解决方案
2020/06/04 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
室内设计专业学生的自我评价分享
2013/11/27 职场文书
安全教育月活动总结
2014/05/05 职场文书
教师节学生演讲稿
2014/09/03 职场文书
擅自离岗检讨书
2014/09/12 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
python scrapy简单模拟登录的代码分析
2021/07/21 Python
P站美图推荐——变身女主角特辑
2022/03/20 日漫