Asp.net mvc 为什么IIS重写为HTTPS会导致301错误循环?
我在Asp.net MVC网站的Asp.net mvc 为什么IIS重写为HTTPS会导致301错误循环?,asp.net-mvc,iis,url-rewriting,iis-8,Asp.net Mvc,Iis,Url Rewriting,Iis 8,我在Asp.net MVC网站的web.config中有以下规则 当我启用此规则时,它会导致301错误循环 <rule name="Redirect to https" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" negate="false" /> <conditions logicalGrouping="MatchAny">
web.config
中有以下规则
当我启用此规则时,它会导致301错误循环
<rule name="Redirect to https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" negate="false" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>
注释
- 当规则被启用时,即使我尝试使用https的URL
,我也会收到相同的302个错误循环
- 我在我的网站上使用Cloudflare SSL
你对这个问题怎么看?问题出在哪里?问题的原因是Cloudflare SSL/TLS应用程序概述选项卡中的灵活SSL加密模式通过HTTPS加密浏览器和Cloudflare网络之间的流量。但是,如果启用了灵活的SSL选项,Cloudflare将通过HTTP向原始web服务器发送未加密的请求。如果原始web服务器配置为在使用灵活的SSL选项时将所有HTTP请求重定向到HTTPS,则会发生重定向循环。
使用完整或完整(严格)SSL选项时也可能发生重定向循环。唯一的区别是Cloudflare通过HTTPS与您的源web服务器联系,如果您的源web服务器将HTTPS请求重定向到HTTP,则会发生重定向循环
要解决重定向循环问题,您可以参考以下任何选项:
从原始web服务器配置中删除HTTP到HTTPS重定向
更新SSL/TLS应用程序概述选项卡中的Cloudflare SSL选项:
如果当前设置为Flexible,则如果在源web服务器上配置了SSL证书,则更新为Full。
(不推荐)如果当前设置为“完全”,则更新为“灵活”
试试这个:
public class SSLFilter : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext){
if (!filterContext.HttpContext.Request.IsSecureConnection){
var url = filterContext.HttpContext.Request.Url.ToString().Replace("http:", "https:");
filterContext.Result = new RedirectResult(url);
}
}
}@RobertHarvey,如果我尝试使用Https和启用规则的URL,我会得到相同的错误,但是当我尝试使用Https和禁用重写规则的URL时,没有错误!了解实际的请求/响应,然后应该清楚原因。