Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 强制ASP.Net Web API阻止HTTP请求,出现错误(403)_Rest_Ssl_Asp.net Web Api_Iis 10 - Fatal编程技术网

Rest 强制ASP.Net Web API阻止HTTP请求,出现错误(403)

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

我想将我的项目配置为不允许具有以下限制的http请求:

  • 它必须是所有API的全局限制(通过web.config、安装程序中的脚本等)
  • 它必须是硬编码的(在IIS中的应用程序上不按“需要SSL”)
  • 无“重定向”-仅返回错误(403)

  • 我的理想选择是通过在安装程序中运行的脚本配置“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。