带有 IIS 10 的 Windows Server 2016 Datacenter。对于我的 Web 应用程序,我通过
Strict-Transport-Security
文件启用了 web.config
,如下所示。
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<remove name="X-AspNet-Version" />
<remove name="MicrosoftOfficeWebServer" />
<remove name="MS-Author-Via" />
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
</customHeaders>
</httpProtocol>
对于使用我的域名的网络流量,这效果很好。但我们有一个大的合作伙伴希望使用自己的域名。没问题 - 我使用 ARR 和 URL 重写将其域名映射到我们网站上的特定页面。需要 ARR,以便他们的域名与其 SSL 证书配合使用。除了标题之外,这也可以正常工作。由于某种原因,
Strict-Transport-Security
标题出现了两次。即使我直接使用重写的 URL,也不会发生这种情况;仅使用他们的域名。我认为问题出在 ARR 上。让我觉得这一点的是,正如您从上面的代码中看到的,我要删除的标头之一是 X-Powered-By
,但它的值也为 ARR/3.0
。但我找不到 Strict-Transport-Security
可能来自或定义的位置。我过去一天一直在寻找,但没有找到任何有意义的东西。欢迎任何建议!
HSTS 标头仅设置一次。显然第二个重复标头是由 ARR 添加的。
您可以使用 URL 重写规则来删除响应中的重复标头。