现在的位置: 网页制作教程网站制作经验 >正文
JavaScript脚本

ie跳转出现Notice: Undefined index: HTTP_REFERER 的解决办法

发表于2017/1/6 网站制作经验 0条评论 ⁄ 热度 3,301℃

问题出现

发现这一问题是在一次开发当中做了一个跳转在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'];

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

Firefox正常跳转

但是,在IE下面却报错:

HTTP_REFERER

造成这种情况的出现,估计是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下面测试:

运行结果见图四:

ie下正常输出

完美解决了之前的错误,而且在FF下面也照样正常运行。

  • 暂无评论