是什么导致IE8阻止某些文件下载?

Jim*_*ket 9 javascript php jquery internet-explorer header

这引起了我的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

        });
Run Code Online (Sandbox Code Playgroud)

---- ----更新

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

Abh*_*ert 4

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

它会触发“危险信号”并增加安全预防措施,这并不令我感到惊讶。

我认为你唯一的选择是不使用 javascript 来触发下载。还有其他方法可以做到吗?