You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:IIS 10经ARR代理后Strict-Transport-Security头部重复问题

解决ARR反向代理导致Strict-Transport-Security头部重复的问题

针对ARR反向代理场景下HSTS头部重复的问题,可通过以下方式排查解决:

1. 检查代理站点的HTTP响应头配置

打开IIS管理器,找到ARR代理对应的合作方域名站点,进入功能视图 → HTTP响应头,查看列表中是否存在Strict-Transport-Security头部。如果有,直接删除该配置——这很可能是代理站点额外添加了相同头部导致重复。

2. 修改源站web.config,先移除再添加HSTS头部

在源站的web.config中,确保添加HSTS头部前先移除可能存在的同名头部,避免重复叠加。修改后的配置如下:

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
    <remove name="X-AspNet-Version" />
    <remove name="MicrosoftOfficeWebServer" />
    <remove name="MS-Author-Via" />
    <remove name="Strict-Transport-Security" /> <!-- 先移除已有头部 -->
    <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
  </customHeaders>
</httpProtocol>

这样无论代理环节是否提前添加了该头部,源站都会先清理再添加,保证最终响应只有一个HSTS头部。

3. 配置ARR出站规则,移除重复头部

如果上述方法无效,可在ARR代理站点的URL Rewrite中添加出站规则,自动合并重复的HSTS头部:

  1. 进入代理站点的URL Rewrite模块 → 出站规则 → 添加空白规则
  2. 规则名称设为Remove Duplicate HSTS Headers
  3. 匹配设置:匹配范围选服务器变量,变量名称填RESPONSE_Strict_Transport_Security,模式填.*
  4. 条件设置:添加条件,变量选RESPONSE_Strict_Transport_Security,模式填^(.*?)(?:\s*,\s*\1)+$(匹配重复的相同HSTS值)
  5. 操作设置:操作类型选重写,值填{C:1},将重复值替换为单一实例

也可以直接将以下代码添加到代理站点web.config的<rewrite>节点下:

<outboundRules>
  <rule name="Remove Duplicate HSTS" stopProcessing="true">
    <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
    <conditions>
      <add input="{RESPONSE_Strict_Transport_Security}" pattern="^(.*?)(?:\s*,\s*\1)+$" />
    </conditions>
    <action type="Rewrite" value="{C:1}" />
  </rule>
</outboundRules>

4. 检查ARR代理核心设置

打开IIS管理器的Application Request Routing Cache → Server Proxy Settings,检查Reverse rewrite host in response headers选项。若该功能开启后导致头部处理异常,可尝试关闭该选项,或调整相关代理配置参数。

内容的提问来源于stack exchange,提问作者CB_Ron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:15:19