完美兼容各大浏览器获取HTTP_REFERER方法总结
后来查了一些相关资料,发现在IE中通过window.location.href或者是是无法获取HTTP_REFERER,真是搞不懂IE的浏览器,很多浏览器运行的很好的东西,它就是不支持,最后没有办法,只能PHP伪造来源HTTP_REFERER的方法或者用JS来伪造。
IE可以识别的HTTP_REFERER提交是通过click触发的事件或者是Form表单提交的请求,下面是根据网上的资料总结的一个方法:
<script>
functionreferURL(url){
varisIe=(document.all)?true:false;
if(isIe){
varlinka=document.createElement(‘a');
linka.href=url;
document.body.appendChild(linka);
linka.click();
}
elsewindow.location=url;
}
varurl=”https://www.nhooo.com”;
referURL(url);
</script>
这个方法先是用document.all来判断当前的浏览器是否是IE,如果是的话就生成一个link,然后自动执行onclick事件,如果不是的话就用JS跳转。这样在处理页面就可以得到HTTP_REFERER了
此方法在IE,Firefox,Safari,Chrome测试通过
2.PHP利用curl伪造IP和来路HTTPReferrer
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://www.nhooo.com/");//构造来路
curl_setopt($ch,CURLOPT_HEADER,1);
$out=curl_exec($ch);
curl_close($ch);
echo$out;
ip.php
<?php
functiongetClientIp(){
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip=$_SERVER["HTTP_CLIENT_IP"];
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
elseif(!empty($_SERVER["REMOTE_ADDR"]))
$ip=$_SERVER["REMOTE_ADDR"];
else
$ip="err";
return$ip;
}
echo"IP:".getClientIp()."<br>";
echo"referer:".$_SERVER["HTTP_REFERER"];热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短