it-swarm.com.de

Ressource wird als Dokument interpretiert, aber mit dem MIME-Typ application/zip übertragen

Wenn ich mit Chrome 12.0.742.112 mit den folgenden Kopfzeilen umleite:

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

Welche, wenn gefolgt, gibt den folgenden Header zurück:

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 leitet die vorherige Seite weder um, noch ändert sie diese. Es wird lediglich die folgende Warnung in der Konsole angezeigt:

Ressource wird als Dokument interpretiert, aber mit dem MIME-Typ application/Zip übertragen.

Der Vorgang funktioniert ordnungsgemäß in Firefox und funktioniert auch in Chrome einwandfrei, wenn ich eine neue Registerkarte öffne und direkt zu http://0.0.0.0:3000/files/download.Zip gehe. Mache ich etwas falsch, oder ist das ein Fehler/Fehler in Chrome?

148
Ashley Williams

Ich habe das Problem behoben, indem Sie einfach eine neue Registerkarte öffnen.

Warum es nicht funktioniert hat, bin ich nicht ganz sicher, aber es könnte etwas damit zu tun haben, wie Chrome mit mehreren Downloads auf einer Seite umgeht. Vielleicht hielt es es für Spam und ignorierte sie einfach.

18
Ashley Williams

Sie können das HTML5-Attribut download in Ihrem <a> -Tag angeben.

<a href="http://example.com/archive.Zip" download>Export</a>

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

144
Roy Hyunjin Han

In Ihrem Anforderungsheader haben Sie Content-Type: text/html gesendet, was bedeutet, dass Sie die Antwort als HTML interpretieren möchten. Wenn der Server Ihnen sogar PDF -Dateien sendet, versucht Ihr Browser, dies als HTML zu verstehen. Das ist das Problem. Ich suche nach dem Grund dafür. :)

29
Saeed Neamati

Dieses Problem trat beim Servieren einer PDF -Datei (MIME-Typ application/pdf) auf und löste es durch Setzen des Content-Disposition-Headers, z.

Content-Disposition: attachment; filename=foo.pdf

Hoffentlich hilft das.

25
Evan

Ich konnte nirgendwo nur eine Erklärung der Nachricht von selbst finden. Hier ist meine Interpretation.

Soweit ich es verstanden habe, erwartete Chrome etwas Material, das es möglicherweise anzeigen konnte (ein document), aber es erhielt etwas, das es nicht anzeigen konnte (oder etwas, das nicht angezeigt werden sollte).

Dies ist sowohl eine Frage, wie das Dokument auf HTML-Seitenebene in href (siehe das Attribut download in Roys Nachricht) als auch in der Antwort des Servers mithilfe von HTTP-Headern (insbesondere Content-Disposition) deklariert wurde. Dies ist eine Frage von contract im Gegensatz zu Hoffnung und Erwartung.

Um auf Evans Weg weiterzugehen, habe ich Folgendes erlebt:

Content-type: application/pdf
Content-disposition: attachment; filename=some.pdf

ist nur inkonsistent mit:

<a href='some.pdf'>

Chrome wird weinen Ressource als Dokument interpretiert, aber übertragen…

Eigentlich bedeutet die Disposition attachment lediglich: Der Browser interpretiert den Link nicht, sondern speichert ihn an einem anderen Ort für andere - versteckte - Zwecke. Hier oben fehlt entweder download neben href oder Content-disposition muss aus den Kopfzeilen entfernt werden. Es hängt davon ab, ob der Browser das Dokument rendern soll oder nicht.

Hoffe das hilft.

15
Champignac

Dieses Problem ist heute bei Chrome Version 30.0.1599.66 mit meiner Anwendung node.js/express.js aufgetreten.

Die Header are korrekt, express setzt sie richtig automatisch ein, sie funktioniert in anderen Browsern wie angegeben. Wenn das Attribut 'download' von html 5 nicht aufgelöst wird, löst did das Problem mit dem Chrome Erweiterte Einstellungen und aktivieren Sie das Kontrollkästchen "Vor dem Herunterladen fragen, wo die Dateien gespeichert werden sollen".

Danach gab es keine Fehlermeldung "Ressource interpretiert als Dokument ...", die wie im Titel dieses Problems gemeldet wurde. Es scheint also, dass unser Servercode korrekt ist. Chrome meldet diesen Fehler fälschlicherweise im Konsole, wenn Dateien automatisch an einem Ort gespeichert werden.

8
JohnC

Ich bin darauf gestoßen, als ich src = "image_url" in einem iframe ..__ zugewiesen habe. Deshalb wird eine Warnung angezeigt.

4
Carmela

Ich hatte dieses Problem in einem ASP - Websiteprojekt. Durch das Hinzufügen eines "Content-Length" -Headers funktionieren die Downloads in Chrome wieder.

2
R. Salisbury

Dieses Problem wurde in Chrome 61 erneut veröffentlicht. Es scheint jedoch, dass es bei Chrome 62 behoben ist.

Ich habe eine RewriteRule wie unten

RewriteRule ^/ShowGuide/?$ https://<website>/help.pdf [L,NC,R,QSA]

Bei Chrome 61 wurde das PDF nicht geöffnet, in der Konsole wurde die Nachricht angezeigt 

"Resource interpreted as Document but transferred with MIME type application/pdf: "

Wir haben versucht, den Mime-Typ in die Umschreibungsregel wie folgt einzufügen, aber es half nicht.

RewriteRule ^/ShowGuide/?$ https://<website>/help.pdf [L,NC,R,QSA, t:application/pdf]

Ich habe mein Chrome auf die neueste Version 62 aktualisiert und es wurde wieder PDF angezeigt. Die Nachricht befindet sich jedoch immer noch in der Konsole.

Bei allen anderen Browsern funktionierte/funktioniert es einwandfrei.

1
Asif Nowaj

Ich hatte ein ähnliches Problem, wenn ein Dateidownload über Javascript ausgeführt wurde. Das Hinzufügen des Download-Attributs machte keinen Unterschied, aber das Hinzufügen von target = '_ blank' tat es.

Hier ist mein schön einfacher Code:

var link = document.createElement('a');
link.target = '_blank';
link.href = url;
document.body.appendChild(link); // Required for Firefox
link.click();
link.remove(); 

Ich habe es nicht mit direktem HTML-Code ausprobiert, würde aber erwarten, dass es funktioniert.

Hinweis Ich habe festgestellt, dass Firefox erfordert, dass der Link an das Dokument angehängt wird, während Chrome ohne das Dokument funktioniert.

1
Elliveny

Ich habe diese Fehlermeldung erhalten, weil ich von meinem Dateisystem aus bereitete. Nachdem ich mit einem http-Server angefangen hatte, konnte Chrome dies herausfinden.

1
remydib

In meinem Fall war der Dateiname zu lang und erhielt den gleichen Fehler. Einmal unter 200 Zeichen gekürzt, funktionierte gut. (Grenze könnte 250 sein?)

0
holdfenytolvaj

Ich habe das Problem durch adding target="_blank" auf den Link gelöst. Mit diesem Befehl öffnet chrome einen neuen Tab und lädt PDF ohne Vorwarnung, auch im Reaktionsmodus.

0
med

Ich hatte die gleichen Probleme mit einem Download-Manager, den ich erstellt hatte. Mein Problem war, dass der Dateiname zu lang war und die Erweiterung abgeschnitten wurde.

Beispiel: Dateiname: Organisationsprotokolle und andere wichtige Dinge.pd

<?php
  header("Content-Disposition: attachment; filename=$File_Name");
?>

Lösung: Das MySQL-Datenbankfeld wurde auf 255 erhöht, um den Dateinamen zu speichern, und vor dem Speichern des Blobs eine Längenprüfung durchgeführt. Wenn die Länge> 255 ist, reduzieren Sie sie auf 250 und fügen Sie die Dateierweiterung hinzu.

0
eradima

Ich bin nur darauf gestoßen und keine der anderen Informationen, die ich finden konnte, hat geholfen: Es war ein dummer Fehler: Ich habe eine Ausgabe an den Browser gesendet, bevor ich den Dateidownload gestartet habe. Überraschenderweise habe ich keine hilfreichen Fehler gefunden (wie "bereits gesendete Header" etc.). Hoffentlich erspart dies jemand anderem Trauer!

0
user6096790