我的 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(使用前将#替换为@)