使用content-disposition提供的文件:内联有时会提示下载

rme*_*dor 5 internet-explorer inline http content-disposition

我的专题说明了我所要求的大部分内容.我有一个网站,可以输出各种格式的报告(HTML,CSV,TSV,Excel等).只要有可能,我希望这些文件能够在浏览器中显示.为此,我设置了标题,以便"Content-Disposition"为"inline".这与不同的文件类型非常不一致.似乎在FF3和IE7中,HTML将始终自动打开内联.那讲得通.如果我使用TSV,两个浏览器都会提示下载,因为它是我系统上的未知文件类型.这也很有道理,正是我想要的.但是,Excel和CSV提供不同的行为.在FF中,两者都始终提示下载或打开.如果我选择"打开",它将在新窗口中打开.在IE中,这两个提示下载或打开-我不明白这一个.我认为Excel文件使用Content-Disposition自动内联打开:内联.如果我在IE中选择"打开",它将在浏览器中以内联方式打开.

有人可以解释意外行为吗?对我来说这不是一个真正的问题,但我的用户认为这是一个错误,所以我可以引用他们的权威来源将是非常好的.到目前为止,关于这个"问题"我发现的唯一一件事就是在mozilla论坛上发布一条关于自动开放式内容是IE的安全漏洞之一的帖子......那是一个很老的帖子,所以也许吧在IE7中被"修复"了吗?谢谢.

tho*_*ter 0

检查您的服务器是否为 CSV 和 Excel 文件提供正确的 MIME 类型。为了正确处理它们,即使浏览器能够识别它们的类型并具有文件类型处理程序/插件,也需要正确的 MIME 类型。

您可能希望两者的 MIME 类型均为 application/vnd.ms-excel

如果您将这些文件作为常规文件通过 Web 服务器提供,那么 Apache 中的相关设置是 mime.types 文件。

application/vnd.ms-excel xls csv
Run Code Online (Sandbox Code Playgroud)

如果您从应用程序提供这些文件,则需要自行添加 Content-Type: application/vnd.ms-excel 标头。

请注意,对于某些用户来说,您可能永远无法使其按预期工作 - 例如,未安装 Microsoft Office 的任何人,甚至使用替代浏览器的任何人或弄乱了文件类型关联的人。

(为了您的兴趣,本文描述了该过程 - 它恰好能够 Plone/Zope 但想法是相同的)。