带头的Angular2 http get请求失败

时间:2016-05-11 17:47:35

标签: angular

我正在尝试通过angular2 http做一个简单的get请求,如下所示:(令牌也存在从帖子中检索到我的api)

let idToken = localStorage.getItem('id_token');
let authHeader = new Headers();
if (idToken) {
    authHeader.append('Authorization', 'Bearer ' + idToken);
}
return this._http.get('http://someapicall-to-my-custom-api', {headers: authHeader})
.map(response => response.json())
.subscribe(
    data => console.log(data),
    error => console.log(JSON.stringify(error)),
    () => console.log('Completed')
);

如果我在没有标题的情况下调用我的api,它会返回一个好的结果。我添加标题的那一刻我只运行订阅中的错误。问题是我需要开始用它来发送标题来获取一些受保护的数据,到目前为止还是失败了。

在控制台中我看不到任何有用的信息,我只看到这个:

{"_body":{"isTrusted":true},"status":200,"ok":true,"statusText":"Ok","headers":{},"type":3,"url":null}

在对API的GET请求中,我看到没有200好,但是当我没有添加标题时我会这样做。此外,没有响应标头。

如果我尝试使用邮递员做同样的事情,它在该程序中没有问题。

我希望有人能指出我正确的方向。可能是我的api?我该怎么调试呢?

3 个答案:

答案 0 :(得分:2)

您还需要

Access-Control-Allow-Headers: Authorization

另见CORS: Autorization is not allowed by Access-Control-Allow-Headers

答案 1 :(得分:1)

将此添加到我的Laravel API中的routes.php,这是我试图调用的api开始工作。感谢GünterZöchbauer给我的想法,在那里添加:)

header('Access-Control-Allow-Headers:  Content-Type, X-Auth-Token, Origin, Authorization');

答案 2 :(得分:0)

这也发生在电子应用和Chrome扩展的背景下。

原因是您的应用和服务器之间存在代理。 (通常是Intranet域的身份验证代理服务器)。此新网址与您从中加载应用的网页网址或其他可信网址不匹配。

很遗憾,您不知道代理服务器上的域是否将其添加到您的可信URL。所以没有办法解决这个问题。