2012-03-29 55 views
9

这在我的IE8用户中造成了一些悲伤。是什么导致IE8阻止某些文件下载?

在我的网站上,我通过php脚本启动了文件下载(file_download.php?file = X123)。 在此页面中,它将一些数据记录到数据库,然后使用标题强制下载。此页面上的所有内容似乎都能在所有浏览器上正常运行。

它是如何称呼这个页面,似乎给我的烦人小“为了帮助保护您的安全 - Internet Explorer已阻止网站下载文件到您的计算机”。

如果我使用常规href标记<a href="/file_download.php?file=X123">download</a>它启动正确(没有IE阻止的下载消息)。

但是,当我启动使用jQuery脚本它给了我这个警告。

所以我想IE8可能会对javascript重定向产生怀疑,所以我在本地页面上做了一个简单的JS函数,但是它没有任何问题。

所以看来jQuery可能是罪魁祸首......是因为window.location事件是从另一个页面或脚本源调用的吗?有谁知道这是如何工作的?

我会继续测试,但现在,任何人都可以在这个问题上发光一些?要求用户调整他们的IE设置不是一种选择。

感谢

-------- jQuery代码--------------

  jQuery("a").click(function(e){ 

      if(jQuery(this).attr("href") !== undefined){ 

       downloadLink = jQuery(this).attr("href"); 
       thingClicked = jQuery(this); 

       dll_io = downloadLink.indexOf("/file_download.php?file_id="); 
       dll_io2 = downloadLink.indexOf("/file_download_safe.php?file_id="); 


        if(dll_io == 0 || dll_io2 == 0){ 

         e.preventDefault(); 

         jQuery.getScript("/includes/get_login.php?file_id=" + downloadLink + "&dll_io=" + dll_io + "&dll_io2=" + dll_io2 + "&last_url=" + document.URL, function(rp){ 
          //get_login.php sets 'requested_dl_id' cookie 

          if(dll_io2 == 0){ 
           window.location = downloadLink; 
          }else{ 
           if(rp == "allow"){ 
            window.location = downloadLink; 
           }else{ 
            jQuery("#download_prompt").click(); 
           } 
          }//end condition: if file_download_safe -> set cookie and send to page. IF file_download -> set cookie and decide to prompt or not. 

         }); 
        }//end if fd == file_download.php 
      }//end only execute code if 'a' has a defined 'href' attribute 

     }); 

---- ----更新

我现在已经对自己进行了足够的了解,以了解这个问题的原因 - 但没有简单的解决方案。原因是IE7会自动阻止从非用户事件启动的下载。所以一个onclick事件将启动一个下载,但不是一个jQuery脚本。仍在寻找解决方法。

+0

+1只是为了单纯的第一线...... – jeroen 2012-03-29 01:32:35

+0

你能张贴的可疑代码? – 2012-03-29 01:36:02

+0

您是否正在加载托管在您的域名上的jQuery的副本,或者您是否将其从不同的域名(如CDN)中提取? – 2012-03-29 02:30:33

回答

4

使用JavaScript触发下载是发布恶意软件的常见方式(例如:横幅广告可能触发所有展示广告的网站上的下载)。

它不会让我感到惊讶,它会触发“红旗”并增加安全防范措施。

我认为你唯一的选择是不使用JavaScript来触发下载。有没有其他方式可以做到这一点?

4

我不能重新启用“帮助保护您的安全”thingie,但根据this articlewindow.location可能是罪魁祸首。

有你尝试

$('<iframe>', {src:downloadLink}).appendTo('body'); 

代替

window.location = downloadLink; 
+0

是一个勇敢的努力,但我仍然得到错误窗口。 – 2012-03-29 03:37:43

相关问题