这引起了我的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&amp; 8自动阻止从非用户事件启动的下载。因此onclick事件将启动下载,但不会启动jQuery脚本。仍在寻找解决方法。
答案 0 :(得分:4)
使用JavaScript触发下载是分发恶意软件的常用方法(例如:横幅广告可能会在展示广告的所有网站上触发下载)。
它不会让我感到惊讶,它会触发“红旗”并增加安全预防措施。
我认为您唯一的选择是不使用javascript来触发下载。还有其他方法吗?
答案 1 :(得分:4)
我无法启用“帮助保护您的安全”,但基于this article window.location
可能是罪魁祸首。
你试试吗
$('<iframe>', {src:downloadLink}).appendTo('body');
取代
window.location = downloadLink;