微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HSTS的URL重写

如何解决HSTS的URL重写

我正在尝试在web.config文件部分中编写HSTS重写规则

<rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="^test\.test\.test$" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://test.test.test/{R:1}"
              redirectType="Permanent" />
        </rule>
      </rules> 
      <outboundRules>
        <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>
      </outboundRules>
</rewrite> 

我可以在IIS中看到这些重定向和重写规则,但是不确定为什么通过开发工具F12检查网站时Strict-Transport-Security标头不存在

我知道还有另一种方法可以在web.config添加自定义标头,但是通过查看SO上的几篇文章,这似乎不是推荐的方法

有人可以告诉我我在这里做什么错吗?

解决方法

我认为您的“ HTTP到HTTPS重定向”规则不正确。请打开失败请求跟踪以查看它是否生效。因为HTTPS的值仅是On或Off,所以在测试模式时它总是失败。更多服务器变量可以参考this

getCelebritiesDto

当我改变模式时,一切进展顺利。可以在响应标头中找到Strict-Transport-Security标头。 enter image description here

Microsoft建议添加自定义标头的另外两种方法。一种是在“ HTTP响应标头”模块中设置自定义标头。这种方法既快速又简单。请参考this。 另一个是自定义过滤器。这是一些示例代码。

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="Off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://test.test.test/{R:1}"
          redirectType="Permanent" />
    </rule>
  </rules> 
  <outboundRules>
    <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>
  </outboundRules>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。