我有一个非常不寻常的问题刚刚出现。我正在编写一个带有ASP.NET Web API后端的Ionic应用程序。我在早期解决了飞行前的CORS问题,将其添加到我的WebApiConfig类的register方法中:
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请求只会失败一个方法,而其余的工作完美。
答案 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();
}
}