IIS 8.5使用重写模块隐藏响应头敏感信息出现重复头问题求解
问题根因
你遇到的重复响应头问题是IIS出站重写规则的默认行为导致的:缺省状态下,重写规则对响应头执行Rewrite操作时不会覆盖已存在的同名头,只会追加新的头条目,所以才会出现原始值、空值两条重复记录。
解决方案
- 方案1(无额外逻辑需求时推荐使用):直接删除
<httpProtocol>/<customHeaders>节点下对应的add条目,仅保留<clear />即可,从源头上不再生成不需要的响应头,自然不会出现重复问题。 - 方案2(需要保留自定义头生成逻辑、仅特定场景隐藏时使用):给所有重写规则的
action节点添加replace="true"属性,该属性会指定重写操作直接覆盖原有同名响应头,而非追加新条目。
方案2完整配置示例
<httpProtocol> <customHeaders> <clear /> <add name="X-Frame-Options" value="some value" /> <add name="X-UA-Compatible" value="some value" /> <add name="Content-Security-Policy" value="some value" /> </customHeaders> </httpProtocol> <rewrite> <outboundRules rewriteBeforeCache="true"> <rule name="Hide Server header"> <match serverVariable="RESPONSE_Server" pattern="(.*)" /> <action type="Rewrite" value="" replace="true" /> </rule> <rule name="Hide X-UA-Compatible header"> <match serverVariable="RESPONSE_X-UA-Compatible" pattern="(.*)" /> <action type="Rewrite" value="" replace="true" /> </rule> <rule name="Hide X-Frame-Options header"> <match serverVariable="RESPONSE_X-Frame-Options" pattern="(.*)" /> <action type="Rewrite" value="" replace="true" /> </rule> <rule name="Hide Content-Security-Policy header"> <match serverVariable="RESPONSE_Content-Security-Policy" pattern="(.*)" /> <action type="Rewrite" value="" replace="true" /> </rule> </outboundRules> </rewrite>
修改配置后保存,重启对应站点或执行iisreset命令即可生效。
内容的提问来源于stack exchange,提问作者Fatman123
相关产品推荐
相关产品推荐

