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

时间:2016-01-15 00:05:31

标签: c# angularjs asp.net-web-api ionic cors

我有一个非常不寻常的问题刚刚出现。我正在编写一个带有ASP.NET Web API后端的Ionic应用程序。我在早期解决了飞行前的CORS问题,将其添加到我的WebApiConfig类的register方法中:

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

在导航每个页面并进行各种$ http.get通话时,飞行前的CORS正在进行处理(以下是从Chrome开发者工具中获取的网络流量)

Example 1

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

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

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

enter image description here

这是$ http.get代码:

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

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

任何想法为什么OPTIONS请求只会失败一个方法,而其余的工作完美。

1 个答案:

答案 0 :(得分:2)

它似乎与飞行前请求无关,它是您的路线。您将获得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();
   }
}