Warum stürzen sich die Downloads meiner Nutzer zufällig in IE?

8

Ich habe Downloads, die durch eine Umleitung in einem iframe ausgelöst werden.

  1. Benutzer klickt auf den "Download" -Button
  2. unsere JS holt die Download-URL vom Server (es ist eine Zeitlimit-URL, also muss es auf diese Weise gemacht werden)
  3. Der iframe wird auf die Download-URL umgeleitet, die über eine Anhangsdisposition verfügt, sodass der Browser den Download startet, ohne den Speicherort der Seite zu ändern.

das funktioniert gut für alle Benutzer und Browser ... mit Ausnahme einiger IE-Benutzer.

Ich habe versucht, das Problem zu reproduzieren und hier ist, was ich gefunden habe:

  • Wenn die Dialogfelder "Speichern oder Öffnen" schnell angeklickt werden, funktioniert der Download immer
  • Wenn die Dialogfelder "Speichern oder Öffnen" langsam durchgeblättert werden (z. B. 10-20 Sekunden), funktionieren die Downloads manchmal, manchmal nicht. Ich konnte kein Muster finden.

So sieht es aus, wenn es klemmt:

Das Problem ist nicht von der Verbindungszeitüberschreitung bei S3 - meine obigen Experimente liegen gut innerhalb des Zeitfensters.

Was könnte diese sporadischen Downloadfehler verursachen?

update

Server-Protokolle legen nahe, dass die Downloads vollständig an den Benutzer gesendet werden.

    
John Bachir 16.05.2012, 14:50
quelle

4 Antworten

6

Ich habe ein paar Tests gemacht, um die LLVM-Test-Suite herunterzuladen, eine 78 Megs Datei mit IE 9 in Windows 7. Die Downloads beginnen, wenn Sie auf den Link klicken. Der Internet Explorer wartet nicht darauf, dass Sie ihn bestätigen oder abbrechen. IE speichert die Bytes in Ihrem Download-Verzeichnis in einer Datei namens fizzbuz. partially . IE wird Ihre Wahl nachholen, indem Sie entweder die Datei umbenennen oder löschen, wenn Sie abbrechen.

Es könnte ein Timing-Problem oder ein HTTP-Problem sein.

Zeitproblem

Ist es möglich, dass ein anderer Prozess die Datei öffnet, vielleicht sogar sperrt? Vielleicht eine übereifrige Antiviren- oder Echtzeit-Backup-Software? Chancen sind die schließen und umbenennen Operation (die stattfinden muss, da der Server die ganze Datei gesendet hat) geht etwa so:

  1. Schreibe die letzten, gültigen Bytes in die fizzbuzz. partielle Datei
  2. Schließen Sie die Datei
  3. Benennen Sie die Datei um

Was passiert, wenn ein Prozess die Datei zum exklusiven Lesen zwischen 2 und 3 ergreift? Vielleicht macht diese Anwendung einige Änderungen an Datei wie Schreiben in einen alternativen NTFS-Stream, die für IE verwirrend sind?

Beachten Sie, dass Browser-Plug-Ins auch über das Ende des Downloads informiert werden. Eine andere Art von Timing-Problem könnte durch ein Plug-in verursacht werden, das den Download überwacht , und es Ende zu sehen, macht eine Operation. Diese Operation kann fehlschlagen oder bei bestimmten Gelegenheiten nicht zurückkehren.

Versuchen Sie, das Problem zu reproduzieren, ohne dass ein Antiviren-Programm läuft (ein besserer Test, als nur die Datei auf die weiße Liste setzen) und ohne dass Browser-Plug-ins geladen werden.

HTTP-Problem

Der Server und der Client müssen dem Weg zum Beenden der Verbindung zustimmen. Sie müssen entweder:

  1. Schließen Sie die Verbindung am Ende der Übertragung
  2. Geben Sie die Länge des Downloads an

Es ist schwer, dies aus der Entfernung zu debuggen, aber wenn möglich, erfassen Sie einen Netzwerk-Trace des Downloads und suchen Sie nach folgenden Hinweisen:

  1. Der Content-length-Header ist nicht vorhanden oder vielleicht nicht-von-N (der Browser wird ewig auf N Bytes warten, die nicht kommen)?
  2. Hat jeder Client die gleiche Proxy-Konfiguration?
  3. Werden die nicht funktionierenden Clients auf HTTP 1.0 heruntergestuft? (Es gibt eine Einstellung namens "immer http 1.0 über Proxy verwenden"

In Ihrem Screenshot sieht es so aus, als ob der Browser die geschätzte Ankunftszeit nicht berechnen konnte, aber es gibt keine Korrelation zwischen diesem und dem Download.

    
ixe013 23.05.2012 04:45
quelle
4

Ich weiß nicht, wie IE damit umgeht, aber in anderen Browsern, während Sie wählen, wo Sie die Datei speichern möchten, hat der Download bereits begonnen. Wie lange dauert Ihre Download-URL? Hast du versucht es höher zu stellen? Funktioniert es mehr als einmal? (Falls nicht, überprüfen Sie Ihr Protokoll auf fehlgeschlagene Zugriffsversuche). Viel Glück.

PS: Wenn nichts funktioniert, versuchen Sie es .

    
Enrico 16.05.2012 15:58
quelle
0

Welche Version von IE? IE8 verhält sich manchmal falsch, wenn Sie vor dem Abschluss nicht entscheiden, was mit Downloads zu tun ist ...

Wenn der Server protokolliert, dass die Daten an den Client / Browser gesendet wurden, müssen als nächstes Proxy und Browser untersucht werden.

Und Ihr Screenshot sieht tatsächlich wie der Download-Dialog aus, während die Auswahl noch NICHT vorgenommen wurde. Gibt es irgendwo im Hintergrund einen Selektionsbildschirm?

    
Germann Arlington 22.05.2012 16:54
quelle
0

Versuchen Sie, cache-control: max-age auf einen Wert größer als 0 zu setzen. Ich habe festgestellt, dass der IE bei Content, der sofort abläuft (z. B. durch Verwendung von No-Cache), so etwas vermasseln kann.

    
SpliFF 23.05.2012 04:55
quelle

Tags und Links