完美兼容各大浏览器获取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 相关文章推荐
jquery图片延迟加载 前端开发技能必备系列
Jun 18 Javascript
删除节点的jquery代码
Jan 13 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
Sep 28 Javascript
zTree树形菜单交互选项卡效果的实现方法
Dec 25 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
Javascript模拟实现new原理解析
Mar 03 Javascript
JS实现可控制的进度条
Mar 25 Javascript
Vue单文件组件开发实现过程详解
Jul 30 Javascript
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语法速查表
2007/01/02 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
python中bisect模块用法实例
2014/09/25 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python 错误和异常代码详解
2018/01/29 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
详解爬虫被封的问题
2019/04/23 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python中有函数重载吗
2020/05/28 Python
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
我的大学生活职业生涯规划
2014/01/02 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
优秀志愿者感言
2015/08/01 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript