ASP.NET Core中如何拦截非允许的HTTP请求方法
在ASP.NET Core中禁用指定外的HTTP方法
你可以通过修改中间件,一次性拦截所有不在允许列表内的HTTP方法,返回405状态码,同时设置Allow响应头告知客户端允许的方法。替换你当前的中间件代码为以下内容:
app.Use(async (context, next) => { // 定义允许的HTTP方法集合 var allowedMethods = new HashSet<string> { "GET", "POST", "HEAD" }; if (!allowedMethods.Contains(context.Request.Method)) { // 返回405方法不允许 context.Response.StatusCode = StatusCodes.Status405MethodNotAllowed; // 设置Allow头,明确告知允许的方法 context.Response.Headers.Append("Allow", string.Join(", ", allowedMethods)); return; } await next.Invoke(); });
说明
- 这段代码会在请求进入后续管道前,先检查请求方法是否在允许列表中,不在则直接返回405,避免触发后续框架内部错误导致的500状态码。
- 设置
Allow头是HTTP规范的要求,能让客户端清晰知道哪些方法是被允许的。
内容的提问来源于stack exchange,提问作者Suzaku
相关产品推荐
相关产品推荐

