Con Chrome 12.0.742.112, si redirecciono con los siguientes encabezados:
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
Que si se sigue devuelve el siguiente encabezado:
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 no redirigirá ni cambiará la página anterior, solo informará la siguiente advertencia en la consola:
Recurso interpretado como Documento pero transferido con aplicación tipo MIME / zip.
El proceso funciona correctamente en Firefox, y también funciona bien en Chrome si abro una nueva pestaña y voy directamente a http://0.0.0.0:3000/files/download.zip
. ¿Estoy haciendo algo mal o es un error / peculiaridad de Chrome?
javascript
google-chrome
Ashley Williams
fuente
fuente
Respuestas:
Puede especificar el atributo de descarga HTML5 en su etiqueta <a>.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download
fuente
En el encabezado de su solicitud, ha enviado, lo
Content-Type: text/html
que significa que desea interpretar la respuesta como HTML. Ahora, incluso si el servidor le envía archivos PDF, su navegador intenta entenderlo como HTML. Ese es el problema. Estoy buscando para ver cuál podría ser la razón. :)fuente
Content-Type: application/zip
sin resultado, todavía trata de procesarlo como un 'Documento'. Probablemente también valga la pena señalar que la URL zip es dinámica en mi aplicación, por lo que no tiene nada que ver con el almacenamiento en caché.Accept
encabezado de la solicitud comotext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
, tal vez? Estoy absolutamente perplejo aquí, ¡realmente lo estoy!text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
hay una parte que dice que Chrome acepta casi todo (*/*
).Experimenté este problema al entregar un archivo PDF (aplicación tipo MIME / pdf) y lo resolví configurando el encabezado Content-Disposition, por ejemplo:
Espero que ayude.
fuente
He solucionado esto ... simplemente abriendo una nueva pestaña.
No estoy completamente seguro de por qué no funcionaba, pero podría tener algo que ver con la forma en que Chrome maneja las descargas múltiples en una página, tal vez pensó que eran spam y simplemente las ignoró.
fuente
No pude encontrar en ninguna parte solo una explicación del mensaje por sí mismo. Aquí está mi interpretación.
Según tengo entendido, Chrome esperaba algo de material que podría mostrar (un documento ), pero obtuvo algo que no pudo mostrar (o algo que le dijeron que no mostrara).
Esta es una cuestión de cómo se declaró el documento en el nivel de página HTML
href
(ver eldownload
atributo en el mensaje de Roy) y cómo se declara dentro de la respuesta del servidor mediante los encabezados HTTP (en particularContent-Disposition
). Esta es una cuestión de contrato , en oposición a la esperanza y la expectativa.Para continuar en el camino de Evan, he experimentado eso:
es simplemente inconsistente con:
Chrome llorará Recurso interpretado como documento pero transferido ...
En realidad, la disposición del archivo adjunto solo significa esto: el navegador no interpretará el enlace, sino que lo almacenará en algún lugar para otros fines ocultos. Aquí arriba, o
download
falta al ladohref
, oContent-disposition
debe eliminarse de los encabezados. Depende de si queremos que el navegador represente el documento o no.Espero que esto ayude.
fuente
Encontré este mismo problema hoy con Chrome Versión 30.0.1599.66 con mi aplicación node.js / express.js.
Los encabezados son correctos, express los configura correctamente de forma automática, funciona en otros navegadores como se indica, al colocar el atributo html 5 'download' no se resuelve, lo que sí resolvió es ir a la configuración avanzada de Chrome y marcar la casilla "Preguntar dónde guardar cada archivo antes de descargar ".
Después de eso, no hubo un error "Recurso interpretado como documento ..." informado como en el título de este problema, por lo que parece que nuestro código de servidor es correcto, es Chrome el que informa incorrectamente ese error en la consola cuando está configurado para guardar archivos a una ubicación automáticamente.
fuente
Tuve un problema similar al realizar una descarga de archivos a través de Javascript. Agregar el atributo de descarga no hizo ninguna diferencia, pero agregar target = '_ blank' sí, ya no recibo el mensaje de consola 'Recurso interpretado como documento ...'.
Aquí está mi código muy simple:
No lo he probado con HTML directo, pero espero que funcione.
Tenga en cuenta que descubrí que Firefox requiere que el enlace se adjunte al documento, mientras que Chrome funcionará sin él.
fuente
Encontré esto cuando asigné src = "image_url" en un iframe. Parece que el iframe lo interpreta como un documento, pero no lo es. Es por eso que muestra una advertencia.
fuente
var photoData = new FormData();
y luego configuré la propiedadcontentType: false
en mi solicitud ajax. La solicitud de publicación será:Content-Disposition: form-data;
Y el tipo de contenidoContent-Type: text/html
Resolví el problema mediante
adding target="_blank"
el enlace. Con esto, Chrome abre una nueva pestaña y carga el PDF sin previo aviso incluso en modo receptivo.fuente
window.open(href, '_blank');
y la nueva pestaña se cierra automáticamente después de la descarga.Tuve este problema en un proyecto de sitio web ASP. Agregar un encabezado "Content-Length" hizo que las descargas comenzaran a funcionar nuevamente en Chrome.
fuente
Este problema volvió a aparecer en la versión Chrome 61. Pero parece que está arreglado en Chrome 62.
Tengo una RewriteRule como a continuación
Con Chrome 61, el PDF no se abría, en la consola mostraba el mensaje
Intentamos agregar el tipo mime en la regla de reescritura como se muestra a continuación, pero no sirvió de nada.
He actualizado mi Chrome a la última versión 62 y comenzó a mostrar el PDF nuevamente. Pero el mensaje sigue ahí en la consola.
Con todos los demás navegadores, estaba / está funcionando bien.
fuente
Acabo de encontrar esto y ninguna de la otra información que pude encontrar ayudó: fue un error estúpido: estaba enviando resultados al navegador antes de comenzar la descarga del archivo. Sorprendentemente, no encontré errores útiles (como "encabezados ya enviados", etc.). ¡Con suerte, esto le ahorra a alguien más dolor!
fuente
En mi caso, el nombre del archivo era demasiado largo y obtuve el mismo error. Una vez acortado por debajo de 200 caracteres funcionó bien. (¿el límite puede ser 250?)
fuente
Recibí este error porque estaba sirviendo desde mi sistema de archivos. Una vez que comencé con un servidor http, Chrome podría resolverlo.
fuente
Estaba experimentando el mismo problema con un administrador de descargas que creé. El problema que tuve fue que el nombre del archivo era demasiado largo y la extensión se cortaba.
Ejemplo: Nombre de archivo: Protocolos organizacionales y otras cosas que son importantes.pd
Solución: aumentó el campo de la base de datos MySQL a 255 para almacenar el nombre del archivo y realizó una comprobación de longitud antes de guardar el blob. Si la longitud es> 255, recórtela a 250 y agregue la extensión del archivo.
fuente
Pruebe el siguiente código y espero que esto funcione para usted.
fuente
Me he enfrentado a esto hoy, y mi problema fue que mi
Content-Disposition
etiqueta se configuró incorrectamente. Parece que para ambospdf
&application/x-zip-compressed
, se supone que debes configurarlo eninline
lugar deattachment
.Entonces, para configurar su encabezado, el código Java se vería así:
fuente