214 votes

Ressource interprétée comme un document mais transférée avec le type application / zip de MIME

Avec Chrome 12.0.742.112, si je redirige avec les en-têtes suivants:

HTTP/1.1 302 Found 
Location: http://0.0.0.0:3000/files/download.zip
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
X-Ua-Compatible: IE=Edge
X-Runtime: 0.157964
Content-Length: 0
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:42:25 GMT
Connection: Keep-Alive

Qui si elle est suivie retourne l'en-tête suivant:

HTTP/1.1 200 OK 
Last-Modified: Tue, 05 Jul 2011 18:18:30 GMT
Content-Type: application/zip
Content-Length: 150014
Server: WEBrick/1.3.1 (Ruby/1.9.2/2011-02-18)
Date: Tue, 05 Jul 2011 18:44:47 GMT
Connection: Keep-Alive

Chrome ne redirigera pas, ni modifier la page précédente, ça va juste rapport de l'avertissement suivant dans la console:

Resource interpreted as Document but transferred with MIME type application/zip.

Le processus fonctionne correctement dans Firefox, et fonctionne aussi très bien dans google Chrome, si j'ouvre un nouvel onglet et aller directement à l' http://0.0.0.0:3000/files/download.zip. Suis-je en train de faire quelque chose de mal, ou est-ce un bug/caprice de Chrome?

Merci!

178voto

Roy Hyunjin Han Points 1246

Vous pouvez spécifier l'attribut de téléchargement HTML5 dans votre balise <a>.

 <a href='http://example.com/archive.zip' download>Export</a>
 

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download

36voto

Saeed Neamati Points 12178

Dans votre en-tête de demande, vous avez envoyé Content-Type: text/html ce qui signifie que vous souhaitez interpréter la réponse au format HTML. Maintenant, si même le serveur vous envoie des fichiers PDF, votre navigateur essaie de le comprendre en tant que HTML. C'est le problème. Je cherche à voir ce que la raison pourrait être. :)

23voto

Ashley Williams Points 2032

J'ai corrigé cela… en ouvrant simplement un nouvel onglet.

Pourquoi cela ne fonctionnait-il pas? Je ne suis pas tout à fait sûr, mais cela pourrait avoir un lien avec la façon dont Chrome gère plusieurs téléchargements sur une page. Peut-être a-t-il pensé qu'il s'agissait de spam et les a simplement ignorés.

9voto

JohnC Points 474

J'ai rencontré ce même problème aujourd'hui avec la Version Chrome 30.0.1599.66 avec mon node.js / express.js application.

Les en-têtes sont correctes, express est correctement automatiquement, il fonctionne dans d'autres navigateurs, comme indiqué, mettant html 5 'télécharger' attribut ne permet pas de résoudre, ce qui n'a résoudre c'est d'aller dans le chrome paramètres avancés, puis en cochant la case "Demander où enregistrer chaque fichier avant de le télécharger.

Après il n'y avait aucune Ressource interprété comme document...." erreur signalée comme dans le titre de cette question, il semble donc que notre code du serveur est correct, c'est google Chrome qui est mal reporting d'erreur dans la console quand il est réglé pour enregistrer des fichiers à un emplacement automatiquement.

4voto

Carmela Points 36

J'ai rencontré ce problème lorsque j'ai affecté src = "image_url" dans une iframe. Il semble que iframe l'interprète comme un document mais ce n'est pas le cas. C'est pourquoi il affiche un avertissement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X