解决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控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
JavaScript实现带标题的图片轮播特效
May 20 Javascript
基于javascript实现简单计算器功能
Jan 03 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
May 28 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
Oct 19 Javascript
详解微信小程序自定义组件的实现及数据交互
Jul 22 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
Sep 02 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
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/07 PHP
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
Python中使用ElementTree解析XML示例
2015/06/02 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python3学生名片管理v2.0版
2018/11/29 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python实现经典排序算法的示例代码
2021/02/07 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
汽车检测与维修专业求职信
2013/10/30 职场文书
2013届毕业生求职信范文
2013/11/20 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
2015年暑假生活总结
2015/07/13 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js