如何设置响应文件名,而不强制“另存为”对话框

我在一些响应中返回一个流,设置适当的 content-type头:

  • 如果浏览器能够呈现给定内容类型的内容,那么它应该在浏览器窗口中显示它。

  • 如果浏览器不知道如何呈现内容,那么它应该显示“另存为”对话框,其中的文件名应该是响应中提供的文件名。

问题是,如果我将 Content-Disposition头部设置为:

附件; 文件名 = “ myfile.txt”

浏览器将始终显示“另存为”对话框。

如果我没有设置 Content-Disposition,那么“另存为”对话框中使用的文件名就是 URL 中的文件名,在我的情况下不起作用。

我也尝试将 Content-Disposition设置为 inline,但结果是相同的。

78416 次浏览

我不确定这是否可能。出于安全考虑,浏览器不会发送它们能够处理的所有内容类型,而只发送几个 Accept-Encoding,这在您的场景中帮助不大。

也许您可以询问您的用户喜欢什么,并将这些信息存储在他们的个人资料中。

正确的方法可能是:

Content-Disposition: inline; filename="myfile.txt"