解决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 相关文章推荐
FLASH 广告之外的链接
Dec 16 Javascript
javascript中window.event事件用法详解
Dec 11 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
JQuery的read函数与js的onload不同方式实现
Mar 18 Javascript
AngularJS内置指令
Feb 04 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
悬浮广告方法日常收集整理
Mar 18 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
JavaScript中的ajax功能的概念和示例详解
Oct 17 Javascript
react-router实现按需加载
May 09 Javascript
vuejs2.0子组件改变父组件的数据实例
May 10 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
5个javascript的数字格式化函数分享
2011/12/07 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
高中毕业生个人自我鉴定
2013/11/24 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
医生进修自我鉴定
2014/01/19 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
Vue全局事件总线你了解吗
2022/02/24 Vue.js