2017-02-13 66 views
0

我有一个angular2应用程序,它使用jwt身份验证连接到express/node服务器。angular2-jwt缺少头部授权

我使用angular2,智威汤逊,这是我在app.module.ts

export function getAuthHttp(http) { 
    return new AuthHttp(new AuthConfig({ 
    globalHeaders: [{'Accept': 'application/json'}], 
    tokenName: 'my_token', 
    tokenGetter: (() => localStorage.getItem('my_token')), 
    }), http); 
} 

和配置,然后,我的HTTP调用我这样使用它

getQuestions(): Observable<any> { 
    return this.authHttp 
    .get(`${this.settings.api}/questions`) 
    .map((response: Response) => response.json()); 
} 

哪里this.settings.api是经过身份验证的网址。

事情是,这是我的以前的PHP服务器,因为它工作正常。 我刚刚更改了网址以便在Node中使用我的新服务器,现在由于令牌未添加到标头中,调用失败。

当我与镀铬控制台检查头,因为我看到这个请求:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en,es-ES;q=0.8,es;q=0.6 
Access-Control-Request-Headers:authorization 
Access-Control-Request-Method:GET 
Cache-Control:no-cache 
Connection:keep-alive 
Host:localhost:3050 
Origin:http://evil.com/ 
Pragma:no-cache 
Referer:http://localhost:8100/ 
User-Agent:... 

如果我没有错,应该有一个有Authorization: Bearer token,但它缺少。

我检查了在获取AuthHttp时是否可以检索到令牌并且它正在工作,所以令牌存在并且可以访问。

任何想法? 谢谢,

编辑 我开始认为这可能与CORS,因为我的老PHP服务器在另一台机器,而新的节点是在我自己的机器。 难道这是它吗?在这种情况下如何解决它?

+0

使服务器向服务器请求 –

+0

不知道该怎么做,这是要在服务器还是在前端配置?或两者? – David

+0

服务器应配置为通过cors请求 –

回答

0

所以,如果有人来到这里,我使用Express来解决这个问题。

https://www.npmjs.com/package/cors

易于使用,只是在我的节点服务器中间件任何前加入app.use(cors());