MVC3在[RequireHttps]之后如何确保使用非https
本文关键字:确保 https 何确保 RequireHttps 之后 MVC3 | 更新日期: 2023-09-27 18:21:22
我找到了这篇文章,它看起来像是我应用程序所需要的,我的问题是,当不再需要https时,如何恢复到纯http?它会基于没有[RequireHttps]
注释的操作固有地这样做吗?
编辑:我发现了一些关于从https转移到http的帖子。不过,我还是很感激下面这个问题的答案。
另一方面,我曾就在新窗口打开申请进行过辩论。https只适用于新窗口,这是一个公平的假设吗?
ASP.NET MVC的RequireHttps只走一条路。在过去,我刚刚创建了自己的FilterAttribute实现,以允许双向旅行:
EnsureHttpsAttribute
public class EnsureHttpsAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
Verify.NotNull(filterContext, "filterContext");
Verify.True(filterContext.HttpContext.Request.HttpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase), "filterContext");
var request = filterContext.HttpContext.Request;
if (request.Url != null && !request.IsSecureConnection && !request.IsLocal)
filterContext.Result = new RedirectResult("https://" + request.Url.Host + request.RawUrl);
}
}
保证HttpAttribute
public class EnsureHttpAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
Verify.NotNull(filterContext, "filterContext");
Verify.True(filterContext.HttpContext.Request.HttpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase), "filterContext");
var request = filterContext.HttpContext.Request;
if (request.Url != null && request.IsSecureConnection)
filterContext.Result = new RedirectResult("http://" + request.Url.Host + request.RawUrl);
}
}
如果内存服务,则与RequireHttpsAttribute实现几乎相同;尽管上面的实现检查它是否是CCD_ 2请求并且忽略切换到HTTPS。
我建议你阅读这篇文章:
http://www.codehosting.net/blog/BlogEngine/post/More-fiddling-with-MVC3-and-https.aspx