web-dev-qa-db-fra.com

IE: Impossible de télécharger * à partir de *. Impossible d'ouvrir ce site Internet. Le site demandé est soit indisponible, soit introuvable)

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:

  • Vous êtes sur mon site Web et cliquez sur un lien de téléchargement.
  • Vous accédez à tout sur mon site et collez l'URL dans la barre d'adresse et accédez-y.
  • Vous avez déjà accédé au lien du document une fois auparavant, même s'il a fait une erreur.

Cela ne fonctionne pas si:

  • Vous n'avez pas accédé à mon site avec l'actuel IE ouvrez et collez le lien dans la barre d'adresse. Il affiche l'erreur suivante:

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.

47
Smartie

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.

24
Eileen

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.

19
rymo

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.

15
rymo

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");
7
Dan

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

6
David

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 !!

3
Dhananjay pal

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.

1
datta bhor

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();
1
Sheryar Nizar

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.

0
phil hong

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 .

0
SliverNinja - MSFT

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.

0
Sandip Bhoi

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.

0
Jimme