在ASP.NET 5(核心)中间件中需要HTTP(而不是HTTPs)
在我旧版本的ASP.NET MVC 5中,我有一个自定义筛选器,用于管理HTTPs连接。我的筛选器强制通过HTTP重新发送安全HTTPS请求 这是我的过滤器:在ASP.NET 5(核心)中间件中需要HTTP(而不是HTTPs),asp.net,asp.net-core,Asp.net,Asp.net Core,在我旧版本的ASP.NET MVC 5中,我有一个自定义筛选器,用于管理HTTPs连接。我的筛选器强制通过HTTP重新发送安全HTTPS请求 这是我的过滤器: /// <summary> /// Forces a secured (HTTPS) request to be resent over HTTP /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets
/// <summary>
/// Forces a secured (HTTPS) request to be resent over HTTP
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireHttpAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext.Request.IsLocal)
{
return;
}
if (string.Equals(filterContext.HttpContext.Request.Headers["X-Forwarded-Proto"],
"https",
StringComparison.InvariantCultureIgnoreCase))
{
HandleHttpsRequest(filterContext);
}
return;
}
protected virtual void HandleHttpsRequest(AuthorizationContext filterContext)
{
if (!string.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
// Only redirect GET requests
return;
}
string url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
如何在ASP.NET 5中实现这一点
谢谢。使用内置的代码,好吧,让它做相反的事情
解析X-Forwarded-For-*是另一个过程的一部分,因此我不想自己动手,而是先配置它。谢谢@blowdart,我会照你说的做;我不知道为什么人们投票否决这个问题。。。