CORS Pre-Flight 只有一种方法失败

CORS Pre-Flight fail only one method

我刚刚遇到了一个非常不寻常的问题。我正在编写一个带有 ASP.NET Web API 后端的 Ionic 应用程序。我通过将其添加到我的 WebApiConfig class:

的 register 方法来解决早期的飞行前 CORS 问题
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

在浏览每个页面并进行各种 $http.get 调用时,飞行前 CORS 正在发挥作用(以下是从 Chrome 开发人员工具获取的网络流量)

但是我最近在 WebApi 中创建了一个额外的方法:

    [Authorize]
    [Route("api/GetJobType")]
    public IHttpActionResult GetJobType(int? id)
    {
        var model = new JobsModel();
        return this.Ok(model.GetJobType(id.Value));
    }

但是飞行前 OPTIONS 请求返回 404:

这是 $http.get 代码:

    var url = ApiEndpoint.url + '/GetJobType/' + jobId;
    $http.get(url).then(function(resp) {
        alert(resp.data);

    }, function(err) {
        alert(err);
    });

知道为什么只有一种方法的 OPTIONS 请求会失败,而其他方法都可以正常工作。

它似乎与 pre-flight 请求没有任何关系,这是您的路线。您收到 404,这意味着它找不到请求的资源。将您的参数添加到路线。

[Authorize]
[HttpGet, Route("api/GetJobType/{id}")]
public IHttpActionResult GetJobType(int? id)
{
   try
   {
     var model = new JobsModel();
     return Ok(model.GetJobType(id.Value));
   }
   catch
   {
     return InternalServerError();
   }
}