2017-08-09 40 views
0

首先,cors已启用并在webapi中工作,我可以通过从另一个控制器没有问题,每当禁用Cors我不能再发布/从服务器获取数据。对于令牌也是如此,只要我禁用webapi上的cors,我就没有得到有效的响应。但是现在我确实得到了有效的答复。状态200 OK(),角度承诺抛出错误 - 没有'访问控制 - 允许 - 起源'

我想从Web API获取令牌。我使用角度资源和承诺。在提琴手,我可以看到状态200,所以我得到一个令牌回来,JSON说不记名= X,所以一切都很好。邮差也在工作。但是,当我看着调试控制台,我看到这个承诺是抛出一个错误,即使寿提琴手和邮递员都告诉我一个有效的JSON文件和一个状态200

// Controller 
.controller('LoginCtrl', ['$scope', 'Token', function ($scope, Token) { 
    $scope.login = function() {Token.save('[email protected]&password=Test123!!&grant_type=password') 
      .$promise.then(function (response) { 
      console.log(response); 
     }); 
    }; 
}]); 

在我厂

.factory('Token', ['$resource', function ($resource) { 
    return $resource(baseUrl + 'token', null, { 
     save: { 
      method: 'POST', 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded', 
       'Accept': '*/*' 
      }, 
     } 
    }); 
}]); 

我的开发人员工具控制台得到的回应是

可能未处理的拒绝:{ “数据”:NULL, “状态”: - 1, “配置”:{ “方法”: “POST”,” transformRequest “:[空],” transformResponse “:[空],” jsonpCallbackParam “:” 回调 “ ”报头“:{” 内容泰pe“:”application/x-www-form-urlencoded“,”Accept“:”/“},”data“:”[email protected] & password = Test123 !! & grant_type =密码 “ ”URL“:” http://localhost:55126/token “},” 状态文本 “:”“}

我100%肯定我是从/令牌调用得到一个有效的JSON对象在此先感谢。


更新

的XMLHttpRequest不能加载本地主机:55126 /令牌否“访问控制允许来源”标题存在于所请求的资源来源。“本地主机:9000”;为因此不允许访问。angular.js:14642 -

可能未处理的排斥反应:{ “数据”:NULL, “状态”: - 1, “配置”:{ “方法”: “POST”, “transfor mRequest”:[空], “TR ansformResponse”:[NU 11], “jsonpCallbackPa RAM”: “回调”, “HEA德尔斯”:{ “内容类型 ”:“ 应用程序/ x-WWW - 形式进行了urlencoded”,”一个ccept“:”/“},”data“:”username = test123 @ tes t.com & password = Test1 23 !! & grant_type =通字”, “URL”: “localho ST:55126 /令牌”;} “状态文本”: “”}

这些2条误差线弹出刚过彼此

+0

-1的状态通常表示[CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)问题。浏览器已经阻止了XHR,因为它违反了[同源策略](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)。 – georgeawg

+0

如果这是一个CORS问题,我应该无法获取数据。我确实得到了服务器的(良好)响应,但承诺并不等待答案的完成。我也在Origin *的后端使用CORS,所以应该没问题。 –

+0

OPTIONS飞行前请求的200响应?可能实际的POST在此之后被阻止?开发者控制台的网络标签显示什么? – georgeawg

回答

0

的解决方案似乎TE被CORS相关即使寿我安装的NuGet Microsoft.AspNet.WebApi.Cors和使用:

config.EnableCors(新EnableCorsAttribute( “”, “”, “*” ));

这有助于'正常'控制器请求,每当请求令牌时,我发现我必须安装NuGet Microsoft.Owin。Cors and use:

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

在应用程序的web api config部分。感谢您的帮助。

相关问题