J'ai un problème avec mon site Web et IE. J'ai un fichier Document.ashx qui devient un document de ma base de données en fonction du paramètre passé dans la chaîne de requête.
Le fichier fonctionne si:
Cela ne fonctionne pas si:
Windows Internet Explorer
Impossible de télécharger Document.ashx à partir de MyHostName.
Impossible d'ouvrir ce site Internet.
Le site demandé est indisponible ou introuvable.
Veuillez réessayer plus tard.
Quelqu'un at-il une idée de ce qui pourrait provoquer cela. Naturellement, cela fonctionne bien dans Firefox.
J'ai eu plusieurs personnes dans mon bureau pour l'essayer avec IE et ils ont tous le même problème. Ils disent tous que cela fonctionne dans Firefox.
Tout comme rymo a dit set Cache-Control: private
, Si votre en-tête de réponse contient le Pragma :no-cache
, vous devez également le remplacer par Pragma: token
.
Basé sur l'article de la base de connaissances proposé par David ici ( les téléchargements de fichiers Internet Explorer via SSL ne fonctionnent pas avec les en-têtes de contrôle du cache ) , nous avons changé nos en-têtes sortants de Cache-Control: no-cache
à Cache-Control: private
. Cela semble avoir résolu le problème IE8 sans affecter les autres navigateurs. Attention à utiliser Cache-Control: no-store
ainsi que.
Il s'avère qu'IE8 peut être fait pour accepter la mise en cache entièrement désactivée, mais c'est très pointilleux sur l'ordre exact des en-têtes. Donc, au lieu de revenir à private
(qui permet une certaine mise en cache et peut ne pas correspondre à vos besoins de sécurité), utilisez:
Cache-Control: no-store, no-cache, must-revalidate
Lorsque spécifié dans cet ordre exact - premier no-store
PUIS no-cache
- IE8 permettra le téléchargement du fichier sans erreur. Assurez-vous également que l'en-tête Pragma
n'est PAS défini.
Ce problème se produit dans IE8 et peut-être dans les versions antérieures - mais il est résolu dans IE9 +. Il s'agit du téléchargement de documents via SSL.
Pour résoudre le problème dans mon application, j'ai dû ajouter les deux en-têtes suivants au téléchargement (écrits en PHP):
header("Cache-Control: private");
header("Pragma: cache");
Il semble que j'ai rencontré un problème avec IE 8 uniquement. Lorsque j'ai recherché une solution, je suis tombé sur 2 solutions. L'une d'elles devrait corriger ce problème.
Juste pour vous faire savoir que c'est un correctif sur la machine cliente car c'est comment IE codé qui cause le problème.
Corrections: http://support.Microsoft.com/kb/81531http://support.Microsoft.com/kb/323308
Pourquoi une telle agitation ? Le problème est dû à l'expiration immédiate du cache ou à l'absence de cache.
Procédez comme suit pour résoudre le problème:
Goto server system -> Run Inetmgr -> RightClick and properties on the folder(e.g images) -> httpHeaders ->
Now Désélectionnez Activer l'expiration du conten, ou cochez Expire après et donnez 1 min.
C'est pour IIS 5.
Il y aura un paramètre similaire pour IIS 6/7.
Bonne programmation !!
J'ai eu le même problème et j'ai été frustré en essayant toutes les méthodes ci-dessus pour le corriger. Évidemment, je ne voulais pas qu'une solution soit faite sur la machine cliente, alors je n'ai fait que supprimer le paramètre "Pragma" de l'en-tête et cela a commencé à bien fonctionner. PROBLÈME RÉSOLU.
si vous utilisez asp.net. supprimer le code avec le cache d'ensembles
Commentez ce qui suit
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
**//Response.Cache.SetCacheability(HttpCacheability.NoCache);**
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
dynamique créer Iframe, définissez le src à l'emplacement de la page de téléchargement, ajoutez au corps.
function downloadInIFrame(fileId) {
var url = "download.aspx?fileId=" + fileId;
var iframe = document.createElement("iframe");
iframe.src = url;
iframe.style.display = "none";
document.body.appendChild(iframe);
}
ce code fonctionne bien pour moi.
Nous avons eu ce même problème avec IE8 en utilisant un contrôleur MVC étiqueté avec NoCache
. Cela définit Response.Cache.SetNoStore
qui interrompt les téléchargements de fichiers dans IE.
Pour résoudre - vous pouvez réinitialiser la politique de cache Http via la réflexion .
Si vous faites "Enregistrer la cible sous ..." ou Ouvrir dans un nouvel onglet, cela fonctionne très bien. Mais donnant toujours une erreur dans IE8. J'ai la même implémentation ... que de créer le div (affichage: aucun) ayant iframe, et de l'ajouter au corps et de définir src au cadre dont le type de contenu est application/binaire.
Nous avons eu ce même problème intégré dans notre déploiement ClickOnce de www.Qiqqa.com . Je soupçonne que cela a à voir avec le "reniflement de type MIME" que IE fait quand il obtient un application/octet-stream
- Je suppose que pour protéger l'utilisateur contre les choses malveillantes.
Quoi qu'il en soit, pour résoudre le problème, nous avons changé le type mime de notre .deploy
fichiers à être text/plain
- évidemment pas idéal, mais en même temps, je ne connais pas de scénario où nous pourrions avoir un .deploy
fichier sur notre serveur qu'un utilisateur consulterait en dehors de ClickOnce.
Problème résolu.