IIS URL 重写出站规则服务器变量说明

IIS URL 重写出站规则服务器变量说明

我有以下用于 IIS 的代码片段。

<configuration>
 <system.webServer>
   <rewrite>
     <rules>
       <rule name="HTTPS_301_Redirect" stopProcessing="true">
         <match url="(.*)" />
         <conditions>
           <add input="{HTTPS}" pattern="^OFF$" />
         </conditions>
         <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
       </rule>
     </rules>
     <outboundRules>
       <rule name="Add_HSTS_Header" preCondition="USING_HTTPS" patternSyntax="Wildcard">
         <match serverVariable="RESPONSE_Strict-Transport-Security" pattern="*" />
         <action type="Rewrite" value="max-age=31536000" />
       </rule>
       <preConditions>
         <preCondition name="USING_HTTPS">
           <add input="{HTTPS}" pattern="^ON$" />
         </preCondition>
       </preConditions>
     </outboundRules>
   </rewrite>
 </system.webServer>
</configuration>

在此处找到:

https://www.owasp.org/index.php/HTTP_Strict_Transport_Security

Q1:你怎么知道这是正确的语法?RESPONSE 下划线服务器变量(来自上面的代码片段)?

serverVariable="RESPONSE_Strict-Transport-Security"

Q2:我可以在哪里找到有关它的更多信息?

答案1

HTTP 严格传输安全(HSTS)是网站可以设置的一个标志,这样来自受支持的浏览器的所有进一步通信都将强制使用 HTTPS。

在您的配置中,该标志会告知浏览器至少在未来一年内仅对您的网站使用 HTTPS。这是通过出站重写规则实现的,该规则将 HSTS 标头添加到所有出站响应中。

由于大多数用户在网站中输入的是 或www.example.comexample.com不是https://www.example.com,这是为了帮助用户避免使用未加密的 HTTP 进行通信。

答案2

serverVariable="RESPONSE_Strict-Transport-Security"

只是 IIS URL 重写语法,这意味着,将此规则应用于名为Strict-Transport-Security

模块文档稍微解释一下这一点。

相关内容