【问题标题】:CORS Pre-Flight fail only one methodCORS Pre-Flight 只有一种方法失败
【发布时间】:2016-04-20 12:26:39
【问题描述】:

我有一个非常不寻常的问题刚刚出现。我正在编写一个带有 ASP.NET Web API 后端的 Ionic 应用程序。我通过将其添加到我的 WebApiConfig 类的 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 请求仅对一种方法会失败,而其他方法却完美无缺的任何想法。

【问题讨论】:

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


    【解决方案1】:

    这似乎与飞行前请求无关,这是您的路线。你得到一个 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();
       }
    }
    

    【讨论】:

    • 感谢斯蒂芬,它现在似乎工作了,这非常奇怪,因为我的其他传递参数的 HTTPGet 方法都不需要像这样在路由属性中反映参数。无论如何谢谢:)
    猜你喜欢
    • 2017-07-31
    • 2016-08-21
    • 2019-07-13
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多