Rest 强制ASP.Net Web API阻止HTTP请求,出现错误(403)
我想将我的项目配置为不允许具有以下限制的http请求:Rest 强制ASP.Net Web API阻止HTTP请求,出现错误(403),rest,ssl,asp.net-web-api,iis-10,Rest,Ssl,Asp.net Web Api,Iis 10,我想将我的项目配置为不允许具有以下限制的http请求: 它必须是所有API的全局限制(通过web.config、安装程序中的脚本等) 它必须是硬编码的(在IIS中的应用程序上不按“需要SSL”) 无“重定向”-仅返回错误(403) 我的理想选择是通过在安装程序中运行的脚本配置“requiressl”。这可以通过编写一个简单的ActionFilter来完成,该过滤器检查请求并在方案未设置为SSL时响应。非常小的实现可能类似于: public class RequireHttpsAttribute
我的理想选择是通过在安装程序中运行的脚本配置“requiressl”。这可以通过编写一个简单的
ActionFilter
来完成,该过滤器检查请求并在方案未设置为SSL时响应。非常小的实现可能类似于:
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new RequireHttpsAttribute());
// ... More configuration ...
}
}
为了使它适用于所有地方,您可能希望在应用程序启动时将其注册为WebAPI配置中的全局过滤器。这看起来像:
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new RequireHttpsAttribute());
// ... More configuration ...
}
}
如果您稍微搜索一下web,您可以找到许多具有更健壮逻辑的类似过滤器的示例,这些过滤器可能更好地满足您的需要。这可以通过编写一个简单的
操作过滤器来实现,该过滤器检查请求并在方案未设置为ssl时作出响应。非常小的实现可能类似于:
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new RequireHttpsAttribute());
// ... More configuration ...
}
}
为了使它适用于所有地方,您可能希望在应用程序启动时将其注册为WebAPI配置中的全局过滤器。这看起来像:
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new RequireHttpsAttribute());
// ... More configuration ...
}
}
如果您稍微搜索一下web,您可以找到许多类似过滤器的示例,这些过滤器具有更强大的逻辑,可以更好地满足您的需要。您尝试过什么吗?什么工作或不工作?全局操作筛选器,检查传入请求的方案,如果不是https,则返回403。您尝试过什么吗?什么工作或不工作?全局操作筛选器,检查传入请求的方案,如果不是https,则返回403。