使用自定义错误页面时删除IIS服务器标头

5

好的...我需要从我的生产服务器中删除'Microsoft:IIS8.5' 服务器头,我已经使用URLRewrite模块完成了这个任务。这是我的规则:

<outboundRules>
    <rule name="replace server name header" patternSyntax="Wildcard">
        <match serverVariable="RESPONSE_Server" pattern="*" />
        <action type="Rewrite" value="MyServer" />
    </rule>
</outboundRules>

这在所有常规页面上都很好用。问题是我有自定义错误页面,所以当我遇到错误时,它会执行我的自定义错误(使用MVC),并且看起来很棒。
但是,当它返回这个自定义错误页面时,Server变量又回到了'Microsoft:IIS 8.5'。
不确定为什么会这样,因为UrlReWrite应该替换所有响应中的变量。
你有任何想法吗?
1个回答

5
好的,经过数小时的努力,我仍然无法弄清楚为什么当我执行自定义错误页面时,IIS会绕过我的服务器标头的重写规则。
我已经成功将IIS错误页面设置为“重定向”到我的自定义错误页面,而不是执行自定义错误页面。
令人惊奇的是,无效页面的初始响应(返回代码为302)具有重写的服务器标头,以及它重定向到的自定义错误页面。
如果其他人遇到同样的问题,我想分享这个答案。虽然这个问题很难发现,但在进行安全扫描时可以找到。

谢谢你的建议。这让我省去了数小时的搜索时间。 - Sudarpo Chong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接