Esto está causando un poco de dolor entre mis usuarios de IE8.¿Qué hace que IE8 bloquee algunas descargas de archivos?
En mi sitio tengo descargas de archivos iniciadas a través de script php (file_download.php? File = X123). En esta página, registra algunos datos en una base de datos, luego usa encabezados para forzar la descarga. Todo en esta página parece funcionar bien en todos los navegadores.
Es como llamo a esta página que parece darme el pequeño inconveniente "Para ayudar a proteger su seguridad, Internet Explorer ha bloqueado el sitio para que no descargue archivos a su computadora".
Si utilizo una etiqueta href regular <a href="/file_download.php?file=X123">download</a>
se inicia correctamente (sin mensaje de descarga bloqueado de IE).
Pero cuando inicio utilizando un script jQuery me da esta advertencia.
Así que pensé que IE8 podría ser sospechoso de los redireccionamientos de JavaScript, por lo que hice una función JS simple en la página local, pero no funcionó.
Parece que jQuery puede ser el culpable ... ¿es porque se llama al evento window.location desde otra página o fuente de script? ¿Alguien sabe cómo funciona esto?
Voy a seguir probando, pero por ahora, ¿alguien puede arrojar algo de luz sobre este tema? Pedir a los usuarios que modifiquen su configuración de IE no es una opción.
Gracias
-------- Código 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
});
---- ---- actualización
Ahora me he educado lo suficiente como para comprender la causa de este problema, pero no es una solución simple. La causa es que IE7 & 8 bloquea automáticamente las descargas que se inician desde eventos que no son del usuario. Entonces, un evento onclick lanzará una descarga, pero no un script jQuery. Todavía estoy buscando una solución alternativa.
+1 sólo para la primera línea solo ... – jeroen
Se puede publicar el código sospechoso? –
¿Está cargando una copia de jQuery alojada en su dominio o la está extrayendo de un dominio diferente (como un CDN)? –