完美兼容各大浏览器获取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+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
javascript中定义私有方法说明(private method)
Jan 27 Javascript
javascript 获取HTML DOM父、子、临近节点
Jun 16 Javascript
javascript制作2048游戏
Mar 30 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
分享Javascript实用方法二
Dec 13 Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 Javascript
angularjs的select使用及默认选中设置
Apr 08 Javascript
React diff算法的实现示例
Apr 20 Javascript
Vue 嵌套路由使用总结(推荐)
Jan 13 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
Prototype RegExp对象 学习
2009/07/19 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
浅析vue数据绑定
2017/01/17 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
python 多线程应用介绍
2012/12/19 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
详解Python sys.argv使用方法
2019/05/10 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
Django websocket原理及功能实现代码
2020/11/14 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
好的自荐信包括什么内容
2013/11/07 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
2014年基建工作总结
2014/12/12 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS