完美兼容各大浏览器获取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 相关文章推荐
ext combox 下拉框不出现自动提示,自动选中的解决方法
Feb 24 Javascript
CSS+jQuery实现的一个放大缩小动画效果
Sep 24 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
自己使用jquery写的一个无缝滚动的插件
Apr 30 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
requireJS使用指南
Apr 27 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
Jul 04 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
Mar 23 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
angularjs模态框的使用代码实例
Dec 20 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python批量处理文件或文件夹
2020/07/28 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Pycharm安装python库的方法
2020/11/24 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
美国探亲签证邀请信
2014/02/05 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
竞聘演讲稿
2014/04/24 职场文书
活动总结报告怎么写
2014/07/03 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
springboot中一些比较常用的注解总结
2021/06/11 Java/Android