我有一个angular2应用程序,它使用jwt身份验证连接到一个快速/节点服务器。
我正在使用angular2-jwt,这是我在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是经过验证的url。
问题是,这在我以前的php服务器上运行得很好。我只是更改了url以使用Node中的新服务器,现在调用失败了,因为令牌没有添加到标头中。
当我用chrome控制台检查请求的标题时,我看到如下:
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服务器在另一台机器中,而新节点在我自己的机器中。会是这样吗?在那种情况下该如何解决?
发布于 2017-02-13 12:23:17
所以,万一有人来了,我用一个特快专递库解决了这个问题。
https://www.npmjs.com/package/cors
易于使用,只是在我的节点服务器中的任何中间件之前添加了app.use(cors());。
https://stackoverflow.com/questions/42202284
复制相似问题