gpt4 book ai didi

c# - [RequireHttps] 之后的 MVC3 如何确保使用非 https

转载 作者:太空狗 更新时间:2023-10-29 21:18:58 24 4
gpt4 key购买 nike

我找到了 This Post看起来我需要一个应用程序,我的问题是当不再需要 https 时如何恢复到纯 http?它会根据没有 [RequireHttps] 注释的操作固有地执行此操作吗?

编辑:我发现有几篇文章谈论从 https 转移到 http(herehere)。不过,我仍然希望能回答以下问题。

或者,我曾考虑过让应用程序在新窗口中打开。 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);
}
}

EnsureHttpAttribute

  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 相同的实现;虽然上面的实现检查它是否是 Local 请求并忽略到 HTTPS 的切换。

关于c# - [RequireHttps] 之后的 MVC3 如何确保使用非 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com