完美兼容各大浏览器获取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中string转date示例代码
Nov 01 Javascript
Js实现动态添加删除Table行示例
Apr 14 Javascript
JavaScript通过元素的ID和name设置样式
Jul 08 Javascript
jQuery/CSS3图片特效插件整理推荐
Dec 07 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
js点击选择文本的方法
Feb 09 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
Jul 19 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
vue实现整屏滚动切换
Jun 29 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
python 实现表情识别
2020/11/21 Python
selenium自动化测试入门实战
2020/12/21 Python
python实现xml转json文件的示例代码
2020/12/30 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
三爱活动实施方案
2014/03/19 职场文书
社区文化建设方案
2014/05/02 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
利用Python多线程实现图片下载器
2022/03/25 Python
vue elementUI批量上传文件
2022/04/26 Vue.js