2012-03-29 12 views
9

Dies verursacht einige Trauer unter meinen IE8-Benutzern.Was bewirkt, dass IE8 einige Dateidownloads blockiert?

Auf meiner Seite habe ich Datei-Download über PHP-Skript gestartet (file_download.php? File = X123). Auf dieser Seite werden einige Daten in einer Datenbank aufgezeichnet und anschließend werden Header verwendet, um den Download zu erzwingen. Alles auf dieser Seite scheint in allen Browsern zu funktionieren.

Sein, wie ich diese Seite aufrufen, dass sie mir die lästigen kleinen zu sein scheint „Zum Schutz Ihrer Sicherheit - Internet Explorer wurde blockiert Website von Dateien auf den Computer heruntergeladen“.

Wenn ich einen regulären href-Tag verwende <a href="/file_download.php?file=X123">download</a> es startet korrekt (ohne IE Download-Nachricht gesperrt).

Aber wenn ich mit einem jQuery-Skript starten, gibt es mir diese Warnung. So

Ich dachte IE8 JavaScript-Umleitungen verdächtig sein könnte, so habe ich eine einfache JS-Funktion auf der lokalen Seite, aber es funktionierte kein Problem.

So scheint es jQuery die Ursache sein kann ... ist es, weil das window.location Ereignis von einer anderen Seite oder das Skript Quelle genannt wird? Weiß jemand wie das funktioniert?

werde ich weiter testen, aber jetzt könnte jemand etwas Licht auf dieses Problem glänzen? Benutzer zu fragen, ihre IE-Einstellungen zu optimieren, ist keine Option.

Dank

-------- jQuery-Code --------------

  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 

     }); 

---- ---- Update

Ich habe mich jetzt genug erzogen, um die Ursache dieses Problems zu verstehen - aber keine einfache Lösung. Die Ursache ist IE7 & 8 automatisch blockiert Downloads, die von Nicht-Benutzerereignisse gestartet werden. Ein onclick-Ereignis startet also einen Download, aber kein jQuery-Skript. Ich suche immer noch nach einem Workaround.

+0

+1 nur für die erste Zeile haben ... – jeroen

+0

Können Sie den verdächtigen Code posten? –

+0

Laden Sie eine Kopie von jQuery, das in Ihrer Domain gehostet wird, oder ziehen Sie es aus einer anderen Domäne (wie einem CDN)? –

Antwort

4

Verwendung von JavaScript einen Download auszulösen ist eine gängige Methode, um Malware zu verbreiten (zB: ein Werbebanner Downloads auslösen könnte auf allen Seiten, welche die Anzeige).

Es überrascht mich nicht, dass es eine „rote Fahne“ auslöst und erhöht die Sicherheitsvorkehrungen.

Ich denke, Ihre einzige Option ist nicht Javascript zu verwenden, um den Download auszulösen. Gibt es einen anderen Weg, wie Sie es tun können?

4

ich kann nicht wieder "Zum Schutz Ihrer Sicherheit" Ding, aber basierend auf this articlewindow.location könnte der Schuldige sein.

Sie versuchen, allein

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

anstelle von

window.location = downloadLink; 
+0

war eine tapfere Anstrengung, aber ich bekomme immer noch das Fehlerfenster. –

Verwandte Themen