0

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

  1. 它必须是所有 API 的全局限制(通过 web.config、安装程序中的脚本等)
  2. 它必须是硬编码的(不要在 IIS 中的 APP 上按“要求 SSL”)
  3. 没有“重定向”——只返回错误(403)

我理想的选择是通过在安装程序中运行的脚本配置“需要 SSL”。

4

1 回答 1

2

这可以通过编写一个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);
        }
    }
}

为了使它适用于任何地方,您可能希望在您的应用程序引导时将其注册为 WebAPI 配置中的全局过滤器。这看起来像:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new RequireHttpsAttribute());

        // ... More configuration ...
    }
}

如果您稍微搜索一下网络,您可以找到许多类似过滤器的示例,这些过滤器具有更强大的逻辑,可以更好地满足您的需求。

于 2016-11-03T13:02:47.317 回答