完美兼容各大浏览器获取HTTP_REFERER方法总结


Posted in Javascript onJune 24, 2014

后来查了一些相关资料,发现在IE 中通过 window.location.href 或者是 是无法获取HTTP_REFERER, 真是搞不懂 IE 的浏览器,很多浏览器运行的很好的东西,它就是不支持,最后没有办法,只能PHP伪造来源HTTP_REFERER的方法或者用JS来伪造。

IE可以识别的 HTTP_REFERER 提交是通过click 触发的事件或者是 Form 表单提交的请求,下面是根据网上的资料总结的一个方法:

<script>
function referURL(url){
var isIe=(document.all)?true:false;
if(isIe) {
var linka = document.createElement(‘a');
linka.href=url;
document.body.appendChild(linka);
linka.click();
}
else window.location = url;
}

var url=”https://3water.com”;
referURL(url);
</script>

这个方法先是用 document.all 来判断当前的浏览器是否是IE, 如果是的话就生成一个link,然后自动执行 onclick 事件,如果不是的话就用JS 跳转。这样在处理页面就可以得到 HTTP_REFERER 了

此方法在IE, Firefox, Safari , Chrome 测试通过

2. PHP利用curl伪造IP和来路HTTP Referrer

referer.php

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://mydomain.com/ip.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8')); //构造IP
curl_setopt($ch, CURLOPT_REFERER, "https://3water.com/ ");  //构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);

echo $out;

ip.php

<?php
function getClientIp() {
if (!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if (!empty($_SERVER["REMOTE_ADDR"]))
$ip = $_SERVER["REMOTE_ADDR"];
else
$ip = "err";
return $ip;
}
echo "IP: " . getClientIp() . "<br>";
echo "referer: " . $_SERVER["HTTP_REFERER"];
Javascript 相关文章推荐
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
JS模板实现方法
Apr 03 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 Javascript
jquery form表单获取内容以及绑定数据
Feb 24 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
解决html input验证只能输入数字,不能输入其他的问题
Jul 21 Javascript
js实现下拉框二级联动
Dec 04 Javascript
微信小程序-可移动菜单的实现过程详解
Jun 24 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 #Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 #Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 #Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 #Javascript
js实现div闪烁原理及实现代码
Jun 24 #Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
Jun 24 #Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 #Javascript
You might like
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php中使用websocket详解
2016/09/23 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
JS实现的数字格式化功能示例
2017/02/10 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
深入解析Python中的WSGI接口
2015/05/11 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python pygame实现球球大作战
2019/11/25 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
.NET是怎么支持多种语言的
2015/02/24 面试题
员工自我鉴定
2013/10/09 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
北京颐和园导游词
2015/01/30 职场文书
期中考试后的感想
2015/08/07 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Java基础-封装和继承
2021/07/02 Java/Android
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技