dav*_*ick 5 iis redirect web-config url-rewriting hsts
我正在尝试为HSTS预加载准备一个站点,其中一个要求是根域也支持HSTS.我在"www."页面上提供服务.所以我需要从根域重定向到"www".子域.由于这是一个托管在Azure上的静态站点,我试图将其全部用于IIS URL重写模块.
这是我到目前为止所拥有的:
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<!-- http -> https -->
<rule name="https" enabled="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
<!-- https://anything -> https://www.example.com -->
<rule name="redirect" enabled="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="^(?!www.example.com$).*$" />
</conditions>
<action type="Redirect" url="https://www.example.com{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
<outboundRules>
<rule name="hsts" 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>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
重定向效果很好:
问题是outboundRules
在使用Redirect
操作时不会应用(来自https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-上的MS文档配置参考):
使用重定向操作意味着在执行重定向后,不会为当前URL评估后续规则.
这意味着来自https://example.com - > https://www.example.com的301响应将不具有HSTS预加载所需的HSTS标头.
另请注意,虽然customHeaders
(https://docs.microsoft.com/en-us/iis/configuration/system.webserver/httpprotocol/customheaders/)通常可用于向任何响应添加标头,但HSTS规范明确禁止添加Strict-Transport-Security
标头到非HTTPS响应.我无法确定如何customHeaders
有条件地使用,但如果有办法,这也可以解决这个特殊问题.
所以这里有一个问题:如何Strict-Transport-Security
在重定向时为301响应添加标题(特别是标题)?
归档时间: |
|
查看次数: |
1626 次 |
最近记录: |