解决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 相关文章推荐
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
使用GruntJS构建Web程序之构建篇
Jun 04 Javascript
jquery中post方法用法实例
Oct 21 Javascript
bootstrap实现的自适应页面简单应用示例
Mar 09 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
如何优化vue打包文件过大
Apr 13 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
第十节--抽象方法和抽象类
2006/11/16 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
js实现表格字段排序
2014/02/19 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python 中迭代器与生成器实例详解
2017/03/29 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
python线程信号量semaphore使用解析
2019/11/30 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
python的pip有什么用
2020/06/17 Python
快速了解Python开发环境Spyder
2020/06/29 Python
详解python UDP 编程
2020/08/24 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
出国留学自荐信
2013/10/25 职场文书
自荐书4要点
2014/01/25 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
法制宣传口号
2014/06/16 职场文书
学校宣传标语
2014/06/18 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
英文商务邀请函范文
2015/01/31 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python