ASP.Net网站上的CloudFlare灵活SSL重定向循环

时间:2015-12-17 17:05:56

标签: ssl cloudflare

我发布这个更多是作为标题中问题的答案,因为我们在与Cloudflare的有用支持团队沟通后解决了这个问题。从做我们的研究以来,我们找不到解决方案,这可能对其他人有所帮助!

启用Cloudflare的灵活SSL并且您希望使用How to force HTTPS using a web.config file中所述的方法将所有请求的http重定向到https时,您很可能最终会在重定向循环中。

您可以选择通过CloudFlare页面规则使用页面规则,如https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL-中所述,但在我们的情况下仍然会在网站中留下一些非https请求,这些请求会使网站变得不安全。

1 个答案:

答案 0 :(得分:3)

在同一个Cloudflare支持文章https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL-中可以看到,Cloudflare附加了CF-Visitor HTTP标头,如下所述:

CF-Visitor: {"scheme":"https"}

因此,适用于我们的相应web.config <rewrite>代码段如下:

<rewrite>
  <rules>
    <rule name="Redirect to https" stopProcessing="true">
      <match url="(.*)" />
        <conditions>
          <add input="{HTTP_CF_VISITOR}" pattern="(.*)https(.*)" ignoreCase="true" negate="true"  />
        </conditions>
       <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>