完美兼容各大浏览器获取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 相关文章推荐
国外的为初学者写的JavaScript教程
Jun 09 Javascript
Jquery ui css framework
Jun 28 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
Jun 27 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
Aug 11 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
Feb 07 Javascript
JS实现图片上传预览功能
Nov 21 Javascript
jQuery 获取select选中值及清除选中状态
Dec 13 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
Aug 30 Javascript
自定义javascript验证框架示例【附源码下载】
May 31 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
vuex入门最详细整理
Mar 04 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
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
PHP脚本的10个技巧(2)
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python基础教程之分支、循环简单用法
2016/06/16 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
详解python数据结构和算法
2019/04/18 Python
Python中请不要再用re.compile了
2019/06/30 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
为什么称python为胶水语言
2020/06/16 Python
python让函数不返回结果的方法
2020/06/22 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
数据库专业英语
2012/11/30 面试题
工程业务员工作职责
2013/12/07 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
网络研修随笔感言
2015/11/18 职场文书
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS
python 使用pandas读取csv文件的方法
2022/12/24 Python