ie下面出现Notice: Undefined index: HTTP_REFERER 的解决办法

解决IE与FF浏览器中HTTP_REFERER变量显示不一致的问题
本文详细介绍了在开发过程中遇到的一个跨浏览器问题,即在FF浏览器下HTTP_REFERER变量能正常显示,而在IE浏览器下则会报错。通过深入分析原因,作者提出了一个解决方法,即在跳转前使用自定义函数重新设置HTTP_REFERER变量,从而在不同浏览器中实现了统一的跳转行为。

一:问题出现

发现这一问题是在一次开发当中做了一个跳转在FF下面能正常跳转,最后将项目传到线上之后,测试的却告诉我在IE下面不能跳转,我开始还不相信,后来一测试,果真如此,经过最终的排除BUG,最后锁定了是HTTP_REFERER这个常量的问题。

二:有的时候,在ie下面出现Notice: Undefined index: HTTP_REFERER,但是在FF下面却能正常输出

三:$_SERVER ['HTTP_REFERER'] 变量。这是什么原因呢?现我简化一下代码来讲解解决办法。

见下图一:

html代码为:

<body>
<a href="javascript:$.dianJi();void(0)" name='lj' >点击链接进行跳转</a>
</body>
js代码为:
<script type="text/javascript">
$(function(){
	$.dianJi=function(){
		location.href="http://localhost/20130426/action.php?action=check";
	}
})
</script>


action.php页面代码为:

$action=$_GET['action'];
echo $_SERVER ['HTTP_REFERER'];

四:点击链接,发现,在FF下面能正常输出:

见图二:

但是,在IE下面却报错,见图三:

五:解决办法

造成这种情况的出现,估计是IE的BUG,那该怎么解决呢?我们在跳转的之前想办法,重新做一个跳转的函数。

下面是修改后的js代码:(html代码不做变动)

$(function(){
	$.myRedirect=function(url) {
        var theLink = ''; 
        if (document.getElementById) {
           theLink = document.getElementById('redirect_link');
           if (!theLink) {
              theLink = document.createElement('a');
              theLink.style.display = 'none';
              theLink.id = 'redirect_link';
              document.body.appendChild(theLink);
           }   
           if (url) theLink.href = url;
        }   
        if ((theLink) && (theLink.click)) theLink.click();
        else location.href = url;
      }  
	
	$.dianJi=function(){
		var url="http://localhost/20130426/action.php?action=check";
		$.myRedirect(url);
	}
})


六:重新在IE下面测试:

运行结果见图四:

七:问题解决

从图四可以发现,完美解决了之前的错误,而且在FF下面也照样正常运行。







转载于:https://my.oschina.net/justdo/blog/125670

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值