我找到了This Post并且它看起来像是我需要的应用程序,我的问题是当不再需要https时,如何恢复到纯http?它是否会基于一个没有[RequireHttps]注释的操作来实现这一点?
编辑:我发现有几个帖子在谈论从https迁移到http(here&here)。不过,我还是希望你能回答下面的问题。
或者,我也曾考虑过让应用程序在一个新窗口中打开。https只适用于新窗口,这是一个公平的假设吗?

最佳答案

ASP.NET MVC的RequireHttps只走一条路。在过去,我刚刚创建了自己的filteratattribute实现,允许双向旅行:
保证属性

  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);
    }
  }

保证属性
  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);
    }
  }

如果内存可用,则几乎与RequireAttpsAttribute的实现相同;尽管上面的实现检查它是否是Local请求并忽略到https的切换。

07-26 08:47