ASP.Net 网站上的 CloudFlare 灵活 SSL 重定向循环
CloudFlare Flexible SSL Redirect Loop on ASP.Net website
我发布这个更多是为了回答标题中的问题,因为我们在与 Cloudflare 的支持团队沟通后已经解决了这个问题。由于在进行研究时,我们找不到解决方案,这可能会对其他人有所帮助!
当启用 Cloudflare 的 Flexible SSL 并且您想使用 中描述的方法将所有请求重定向 http
到 https
时,您很可能最终会遇到重定向循环。
您可以选择通过 CloudFlare 的 Page Rule 使用 Page Rule,如 https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL- 中所述,但在我们的案例中,仍然在网站内留下一些 non-https 请求,这些请求使网站不安全.
正如在同一篇 Cloudflare 支持文章 https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL- 中所见,Cloudflare 附加了 CF-Visitor HTTP header,如下所述:
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>
我发布这个更多是为了回答标题中的问题,因为我们在与 Cloudflare 的支持团队沟通后已经解决了这个问题。由于在进行研究时,我们找不到解决方案,这可能会对其他人有所帮助!
当启用 Cloudflare 的 Flexible SSL 并且您想使用 中描述的方法将所有请求重定向 http
到 https
时,您很可能最终会遇到重定向循环。
您可以选择通过 CloudFlare 的 Page Rule 使用 Page Rule,如 https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL- 中所述,但在我们的案例中,仍然在网站内留下一些 non-https 请求,这些请求使网站不安全.
正如在同一篇 Cloudflare 支持文章 https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL- 中所见,Cloudflare 附加了 CF-Visitor HTTP header,如下所述:
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>