CORS Issue同一个controller,一种方法可以,另一种不行

CORS Issue same controller, one method is ok, other one is not

我遇到了非常奇怪的错误。

我在控制器中有两个方法,它们由 angular js http get 事件调用。

第一个工作正常,第二个抛出 CORS 错误,不确定这怎么可能,因为它们都在同一个控制器中。

这是我收到的错误:

这些是我在 angularjs 中进行的调用:

 $http({
        url: 'http://localhost:52876/api/Admin/GetLoanInfo',
        method: "GET",
        params: { loanID: querystringParam }
    }).success(function (data, status) {
        console.log(data);
        $scope.LoanDetailsVM.LoanStatus = data.LoanStatus;
    }).error(function (data, status) {
        console.log(data);
    });

    $http({
        url: 'http://localhost:52876/api/Admin/GetLoanCovenants',
        method: "GET",
        params: { loanID: querystringParam }
    }).success(function (data, status) {
        console.log(data);
    }).error(function (data, status) {
        console.log(data);
    });

控制器方法:

[HttpGet]
[Route("api/Admin/GetLoanInfo")]
public async Task<IHttpActionResult> GetLoanInfo(int loanID)
{

        LoanApplication newApplication = null;
        newApplication = db.LoanApplications.FirstOrDefault(s => s.LoanId == loanID);
        return Ok(newApplication);
}


[HttpGet]
[Route("api/Admin/GetLoanCovenants")]
public async Task<IHttpActionResult> GetLoanCovenants(int loanID)
{
        LoanCovenant newCovenant = null;
        newCovenant = db.LoanCovenants.FirstOrDefault(s => s.LoanID == loanID);
        return Ok(newCovenant);
}

我可以使用这两种方法,我在这两种方法中都有断点,但不确定为什么在第一种方法上抱怨 CORS。

从 Web 浏览器使用 CORS 调用方法会使 Web API 首先通过 OPTIONS 请求被调用(示例 at the end of this article)。

这样,浏览器 知道 是否可以调用请求的 API。

在您的情况下,对端点的调用似乎崩溃了,这意味着 HTTP 500 错误不包含任何 CORS headers。

这解释了为什么 Web 浏览器抱怨 CORS HTTP Header 丢失:Reason: CORS Header 'Access-Control-Allow-Origin' missing

如果你修复了你的方法,那么 HTTP OPTIONS 应该没问题,CORS 错误就会消失。