【问题标题】:Adding HSTS http headers on domain root during redirect to www subdomain in web.config在重定向到 web.config 中的 www 子域期间在域根目录上添加 HSTS http 标头
【发布时间】:2016-01-26 12:33:28
【问题描述】:

我有一个 asp.net 网络应用程序,它被搜索引擎索引在子域“www”上。我真的不想改变这一点:对根域的请求都设置为永久重定向到 www 版本,这一切都很好。

我已经在站点上启用了 HSTS,但是由于重定向,我添加的 HSTS 出站标头规则永远不会在对域根目录的第一个请求中被命中。 (它适用于后续的 https 请求,因为没有重定向)。这是一个问题,因为我想提交站点以进行 HSTS 预加载 - 这要求重定向包含 HSTS 响应标头....

我尝试将规则上的 stopProcessing 属性设置为 false(希望设置 HSTS 标头的出站规则即使在重定向时也会运行)无济于事。

以下是我的配置文件中的相关摘录:

<rewrite>
  <rules>
    <rule name="Canonical Host Name, HTTPS enabled" stopProcessing="false">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" negate="true" pattern="www.mysite.co.uk" />
        <add input="{HTTP_HOST}" negate="true" pattern="^[a-z0-9]+\.cloudapp\.net$" />
        <add input="{HTTP_HOST}" negate="true" pattern="localhost" />
      </conditions>
      <action type="Redirect" url="https://www.mysite.co.uk/{R:1}" redirectType="Permanent" />
    </rule>

  </rules>

        <!-- hsts | http://www.hanselman.com/blog/HowToEnableHTTPStrictTransportSecurityHSTSInIIS7.aspx -->
     <outboundRules rewriteBeforeCache="true">
            <rule name="Add Strict-Transport-Security" enabled="true">
                <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTPS}" pattern="on" ignoreCase="true" />
                    <add input="{HTTP_HOST}" pattern="(mysite.co.uk|www.mysite.co.uk)" ignoreCase="true" />
                </conditions>
                <action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" />
            </rule>  
    </outboundRules>

</rewrite>

【问题讨论】:

    标签: asp.net redirect iis ssl hsts


    【解决方案1】:

    必须添加标题如下:

    <system.webServer>
        <httpProtocol>
          <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
          </customHeaders>
        </httpProtocol>
    </system.webServer>
    

    即使在发送重定向时也会发送标头。 我删除了 outboundRules 部分。

    【讨论】:

      【解决方案2】:

      来自服务器故障的this answer

      HSTS 主机不得在通过非安全传输传输的 HTTP 响应中包含 STS 标头字段。

      请确保您正确配置您的服务器。

      【讨论】:

        猜你喜欢
        • 2012-04-01
        • 2013-09-18
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        相关资源
        最近更新 更多