Chrome 从版本 16 开始对具有不带引号的 content-disposition 标头变得非常严格。虽然网络上的大多数网站将面临用户修复其服务器的压力,但对于没有人愿意接触的小型或内部内部网应用程序来说,这并不容易。
Chrome论坛上关于该问题的帖子,哪些有效,哪些无效。
简短的回答是,如果包含Content-Disposition
标头,则需要在文件名中没有逗号或将文件名引号引号。
我们有一个这样的系统来处理文档管理,触摸代码库不是一种选择,但任何名称中带有逗号的文件都会在 Chrome 中抛出错误。 我该如何解决这个问题?
做一点危险! 这里的事情,但对我的答案不是 100% 有信心,并希望评论/替代方案
您可以使用IIS的URL重写模块来执行此操作,该模块也可以处理标头。
关键是匹配包含文件名=并且文件名没有引号的Content-Disposition
。
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Chrome Comma Fix">
<match serverVariable="RESPONSE_Content_Disposition" pattern="^(.*)(filename=)(?!")([^"]*)(;.*)?$" />
<action type="Rewrite" value="{R:1}{R:2}"{R:3}"{R:4}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
不过我还没有测试过这个。