获得状态-1而不是401 Angularjs

时间:2016-04-12 14:32:49

标签: javascript angularjs http akka

我正在尝试从服务器获得响应。该功能看起来如此:

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的状态。

有人能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

执行跨站点请求时,服务器必须向ALL响应添加有效的CORS标头。这包括错误响应,如401。

确保您可以在401回复中看到lintian标题,但最有可能丢失。