angular2-jwt 在 header 中缺少授权
angular2-jwt missing authorization in header
我有一个使用 jwt 身份验证连接到 express/node 服务器的 angular2 应用程序。
我正在使用 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 中使用我的新服务器,现在调用失败,因为令牌未添加到 headers.
当我使用 chrome 控制台检查请求的 headers 时,我看到了这个:
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 服务器在另一台机器上,而新节点在我自己的机器上。
可能是这样吗?在这种情况下如何解决?
所以,如果有人来到这里,我使用 Express 库解决了这个问题。
https://www.npmjs.com/package/cors
易于使用,只需在我的节点服务器中的任何中间件之前添加 app.use(cors());
。
我有一个使用 jwt 身份验证连接到 express/node 服务器的 angular2 应用程序。
我正在使用 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 中使用我的新服务器,现在调用失败,因为令牌未添加到 headers.
当我使用 chrome 控制台检查请求的 headers 时,我看到了这个:
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 服务器在另一台机器上,而新节点在我自己的机器上。 可能是这样吗?在这种情况下如何解决?
所以,如果有人来到这里,我使用 Express 库解决了这个问题。
https://www.npmjs.com/package/cors
易于使用,只需在我的节点服务器中的任何中间件之前添加 app.use(cors());
。