我想将我的项目配置为不允许具有以下限制的 http 请求:
- 它必须是所有 API 的全局限制(通过 web.config、安装程序中的脚本等)
- 它必须是硬编码的(不要在 IIS 中的 APP 上按“要求 SSL”)
- 没有“重定向”——只返回错误(403)
我理想的选择是通过在安装程序中运行的脚本配置“需要 SSL”。
我想将我的项目配置为不允许具有以下限制的 http 请求:
我理想的选择是通过在安装程序中运行的脚本配置“需要 SSL”。
这可以通过编写一个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 ...
}
}
如果您稍微搜索一下网络,您可以找到许多类似过滤器的示例,这些过滤器具有更强大的逻辑,可以更好地满足您的需求。