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

Windows Server 2016 IIS 10配置HSTS时HTTP多余HSTS头警告的解决方法

问题原因

现有配置仅实现了HTTPS场景下添加HSTS头的逻辑,未对HTTP场景下已存在的HSTS头做清除处理。大部分站点无额外HSTS头配置所以运行正常,这两个站点存在额外的HSTS头来源(如CMS插件、服务器全局规则、手动添加的自定义响应头、IIS原生HSTS误开启),导致HTTP响应(包括301重定向响应)中残留HSTS头,触发安全扫描告警。

解决方案

第一步:排查多余HSTS头的来源

  • 检查问题站点的web.config文件,若存在<system.webServer>节点下的Strict-Transport-Security自定义头配置,直接删除该配置项。
  • 检查服务器全局配置:打开%SystemRoot%\System32\inetsrv\config\applicationHost.config,查找是否有全局添加的HSTS自定义头或全局出站规则,如有则直接删除,或补充仅HTTPS生效的条件。
  • 检查IIS原生HSTS配置:在IIS管理器中选中对应站点,打开「HSTS」配置项,若已开启建议直接关闭,避免和现有URL Rewrite配置冲突。

第二步:调整web.config出站规则

将原有节点替换为以下内容,新增HTTP场景下强制清除HSTS头的逻辑:

<outboundRules>
  <!-- HTTPS场景下添加标准HSTS头 -->
  <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
    <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
    <conditions>
      <add input="{HTTPS}" pattern="on" ignoreCase="true" />
    </conditions>
    <action type="Rewrite" value="max-age=31536000; includeSubDomains; preload"/>
  </rule>
  <!-- HTTP场景下强制移除所有HSTS头 -->
  <rule name="Remove Strict-Transport-Security when HTTP" enabled="true">
    <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

补充说明:如果问题站点使用了IIS ARR反向代理,客户端到代理的协议和代理到后端站点的协议不一致,导致{HTTPS}变量识别错误,可将两个出站规则的条件输入从{HTTPS}替换为{HTTP_X_FORWARDED_PROTO},匹配值分别调整为^https$(添加规则)和^http$(移除规则)即可。

第三步:验证配置

  • 验证HTTP响应:执行命令curl -I http://sandairephotography.com,确认返回响应头中无Strict-Transport-Security字段。
  • 验证HTTPS响应:执行命令curl -I https://sandairephotography.com,确认返回响应头中包含配置的HSTS参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 15:36:04