1

从版本 16 开始的 Chrome 对包含不带引号的逗号的内容处置标头变得非常严格。尽管网络上的大多数站点都将面临用户修复其服务器的压力,但对于没有人愿意接触的小型或内部 Intranet 应用程序来说,这并不容易。

在 Chrome 的论坛上讨论这个问题,什么有效,什么无效

简短的回答是Content-Disposition,如果包含标题,则文件名中不需要逗号或引用文件名。

我们有一个这样的系统处理文档管理,触摸代码库不是一种选择,但是任何名称中带有逗号的文件都会在 Chrome 中引发错误。我怎样才能解决这个问题?

做一些危险的事情!事情在这里,但对我的回答不是 100% 有信心,并希望得到评论/替代方案

4

1 回答 1

2

You could do this using IIS's URL Rewrite module which can also work on headers.

The key will be to match on Content-Disposition which includes filename= and doesn't have quotemarks for the filename.

<system.webServer>
    <rewrite>
        <outboundRules>
            <rule name="Chrome Comma Fix">
                <match serverVariable="RESPONSE_Content_Disposition" pattern="^(.*)(filename=)(?!&quot;)([^&quot;]*)(;.*)?$" />
                <action type="Rewrite" value="{R:1}{R:2}&quot;{R:3}&quot;{R:4}" />
            </rule>
        </outboundRules>
    </rewrite>
</system.webServer>

I haven't yet tested this though.

于 2012-12-11T15:48:38.317 回答