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

一:问题出现

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

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

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

见下图一: php

html代码为: 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页面代码为: java

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

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

见图二: app

可是,在IE下面却报错,见图三: 函数

五:解决办法

形成这种状况的出现,估计是IE的BUG,那该怎么解决呢?咱们在跳转的以前想办法,从新作一个跳转的函数。 测试

下面是修改后的js代码:(html代码不作变更) url

$(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下面测试:

运行结果见图四: spa

七:问题解决

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

相关文章
相关标签/搜索