使用Chrome 12.0.742.112,如果我重定向以下头:

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

如果遵循,将返回以下头文件:

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不会重定向,也不会改变前一页,它只会在控制台中报告以下警告:

资源解释为文档,但使用MIME类型application/zip传输。

这个过程在Firefox中正常工作,如果我打开一个新选项卡并直接访问http://0.0.0.0:3000/files/download.zip,在Chrome中也可以正常工作。是我做错了什么,还是这是Chrome的bug/怪癖?


当前回答

我得到这个错误,因为我正在从我的文件系统服务。一旦我开始与一个http服务器chrome可以找出它。

其他回答

我在提供PDF文件(MIME类型应用程序/ PDF)时遇到了这个问题,并通过设置Content-Disposition头来解决它,例如:

Content-Disposition: attachment; filename=foo.pdf

希望这能有所帮助。

我得到了同样的错误,解决方法是把属性

target = "_ blank"

最后:

<a href="/uploads/file.*" target="_blank">Download</a>

*是要下载的文件的扩展名。

当我在iframe中分配src="image_url"时,我遇到了这个问题。 iframe似乎将其解释为文档,但事实并非如此。这就是为什么它会显示警告。

我在任何地方都找不到对这条信息本身的解释。以下是我的解读。

据我所知,Chrome期待一些它可能显示的材料(一个文档),但它得到了一些它不能显示的东西(或者它被告知不显示的东西)。

这既是一个如何在href中的HTML页面级别声明文档的问题(参见Roy的消息中的下载属性),也是一个如何在服务器的应答中通过HTTP报头(特别是Content-Disposition)声明文档的问题。这是一个契约的问题,而不是希望和期望。

为了继续埃文的道路,我经历了:

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

只是不符合:

<a href='some.pdf'>

Chrome将哭泣资源解释为文档,但传输…

实际上,附件配置的意思是:浏览器不解释链接,而是将其存储在某个地方以用于其他隐藏的目的。在上面这里,要么下载在href旁边缺失,要么Content-disposition必须从头文件中删除。这取决于我们是否希望浏览器呈现文档。

希望这能有所帮助。

只是遇到了这个问题,我能找到的其他信息都没有帮助:这是一个愚蠢的错误:在开始下载文件之前,我正在向浏览器发送输出。令人惊讶的是,我没有发现有用的错误(如“头部已发送”等)。希望这能帮其他人减轻一些痛苦!