【问题标题】:Firefox and Content-Disposition headerFirefox 和 Content-Disposition 标头
【发布时间】:2012-02-27 14:12:04
【问题描述】:

我对附件名称有疑问。当我在谷歌浏览器上调用该站点时,它会返回具有正确名称和扩展名的文件。我用 Internet Explorer 对其进行了测试,它也可以正常工作。问题仅在于 Firefox。我打电话给该站点,它返回文件标题上的第一个单词并且没有扩展名。

例如,如果我想要一个名为“My report.docx”的文件,它会变成一个名为“My”的文件。我用谷歌搜索,结果发现这是人们常见的问题,因为浏览器读取标题的方式不同。他们说解决方法是引用文件名:

Content-Disposition: attachment; filename=My Report.docx

现在是:(注意引号)

Content-Disposition: attachment; filename="My Report.docx"

但是,这对我不起作用。

在 chrome 上它返回“My Report.docx”(实际上带有引号)。 Firefox 返回了一个奇怪的文件,该文件具有正确的扩展名和正确的名称,并且没有引号,但无法执行。它是正确的文件大小、正确的扩展名和正确的名称,但无法执行。它还在文件名前后返回一个空格。

【问题讨论】:

  • 如果您想知道为什么您的 Firefox 会忽略此标头,请检查您是否安装了 InlineDisposition 插件:这是一个专门为禁用 Content-Disposition 强制下载而编写的很棒的插件,而且很简单在进行 Web 开发时忘记。
  • 双引号适用于我的 IE、Chrome 和 FireFox,使用的是最新版本。

标签: firefox header content-disposition


【解决方案1】:

这应该可以按预期工作,这是另一个存在相同问题的 SOq:

还有 Mozilla 页面(我猜你是在引用这个):

我不知道你的服务器端代码的细节,但这里有一些事情需要确认/尝试:

  • 如果您在服务器上有可用的 PHP,您可以尝试上面第一个链接中的代码吗?如果没有,您可能可以在网上以您选择的语言找到一些东西。这样,您就可以确认问题出在您的代码中还是其他地方(服务器设置、浏览器等)
  • 这是发生在其他客户端计算机上(即您尝试从哪里下载)还是仅发生在该客户端计算机上?您可能想尝试其他人来确认。
  • 这在 IE / Safari 或其他浏览器中工作正常吗?您甚至可以尝试在命令行中使用wgetcurl 或类似的方式进行操作。
  • 您是否还正确提供了Content-Type 标头?
  • 您能否尝试下载其他文件或其他类型的文件,例如.png 还是 .xls?事实上,最简单的方法可能是尝试纯文本文件 (text/plain),然后从那里获取。

希望这会有所帮助。

【讨论】:

  • 好的,感谢您的回复,但第一个链接是我在 php 代码中所做的。是的,这也是我所指的。我试图通过引用它来做它所说的,但它所做的只是在文件名的前面和结尾放置额外的空格,所以它就像“My report.docx”,这就是它无法执行的原因.我尝试使用 str_replace() 但这没有用。我什么都试过了。我可以让它在一个浏览器上工作,但它会在另一个浏览器上中断......几乎不可能找到平衡......我也没有提供 Content-Type 标题
  • 好吧,所以我弄清楚了它对所有该死​​的悲伤有什么用。这是因为我使用变量作为名称。我写的代码: $name2 = "filename="."$name"; header('内容配置:附件;'.$name2);当它被服务器处理时,它将变量中的“$”视为一个空格。我必须想办法绕过它....我不知道这是否可能-.-
【解决方案2】:

我知道这是一个非常古老的问题,但我最近遇到了同样的问题。解决方案是

  1. 按照RFC2184 编码您的文件名,或者,
  2. 如果文件名中没有特殊字符,请在内容处置字符串中引用它。

既然您已经尝试过 2,您可以尝试使用 1 并看看效果如何。

通常我使用ContentDisposition 类为我生成标题:

Dim contentDispositionHeader = New Net.Mime.ContentDisposition() With {.FileName = filename}
Response.AddHeader("Content-Disposition", contentDispositionHeader.ToString())

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2018-10-30
    • 2017-10-29
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多