我有 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);
}
}
在我的global.asax
:
protected void Application_BeginRequest() {
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS") {
Response.Flush();
}
}
但是发生了一些奇怪的事情——如果我在控制器中设置断点,OPTIONS 请求就会通过null
练习进入内部。为什么会这样?我希望Flush()
能防止这种情况发生。
就目前而言,我需要向所有对 CORS 敏感的端点(PUT、DELETE)添加对 null 的检查。这似乎不优雅......我是否应该能够防止 OPTIONS 请求击中控制器逻辑,而不是直接用所需的标头响应?