我正在尝试从服务器获得响应。该功能看起来如此:
function getOverview() {
var req = {
method: 'GET',
url: base,
headers: {
'authorization': 'Bearer ' + GottenTokens.getSessionToken()
}
};
return $http(req).then(
function successCallback(response) {
return response;
}, function errorCallback(response) {
console.log(response);
return response;
});
}
当状态为200时,没有问题,它返回状态为200的良好响应。但是......当状态为401时,它返回状态为-1的响应:
Object {data: null, status: -1, config: Object, statusText: ""}
我在邮递员中尝试过,我看到状态为401,浏览器中也是如此:
XMLHttpRequest cannot load http://localhost:5000/overview. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401.
这意味着浏览器和邮递员从服务器获取状态,但它不会出现在Angularjs中。我正在尝试这篇文章:Capture Http 401但它对我没有帮助。我在“工厂”中有这个功能。
顺便说一下,服务器是用akka编写的。我不知道它是否有事可做。以前在NodeJS中我没有遇到问题。因为它在akka中我无法获得Angularjs的状态。
有人能帮帮我吗?
答案 0 :(得分:2)
执行跨站点请求时,服务器必须向ALL响应添加有效的CORS标头。这包括错误响应,如401。
确保您可以在401回复中看到lintian
标题,但最有可能丢失。