WebAPI CORS - 为什么 OPTIONS 请求会进入我的控制器?

2024-03-10

我的 CORS 正在处理以下内容:

[System.Web.Http.HttpPut]
[System.Web.Http.AcceptVerbs("OPTIONS")]
[System.Web.Http.Route("api/exercise")]
public HttpResponseMessage UpdateExercise(Exercise exercise) {
    try {
        _adminService.UpdateExercise(exercise);
        return Request.CreateResponse(HttpStatusCode.OK, "Success");
    } catch (Exception e) {
        return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
    }
}

In my global.asax:

protected void Application_BeginRequest() {
    if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS") {
        Response.Flush();
    }
}

但奇怪的事情发生了 - 如果我在控制器中设置断点,选项请求就会通过null锻炼。为什么会发生这种情况?我希望Flush()为了防止这种情况发生。

就目前情况而言,我需要向所有 CORS 敏感端点(PUT、DELETE)添加 null 检查。这看起来不优雅......我是否应该能够阻止 OPTIONS 请求击中控制器逻辑,而不是立即响应所需的标头?


根据问题中的评论添加此内容作为答案。

问题是由接受引起的OPTIONS动作方法上的动词。然后,MVC 运行时尝试执行操作方法和null出现问题。

删除动词,这样 MVC 就不会尝试执行该方法和Application_BeginRequest活动将为您解决飞行前的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebAPI CORS - 为什么 OPTIONS 请求会进入我的控制器? 的相关文章

随机推荐