首页 文章

angular2-jwt标头中缺少授权

提问于
浏览
0

我有一个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是经过身份验证的网址 .

问题是,这与我以前的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时是否可以检索到令牌并且它正在工作,因此令牌存在且可以访问 .

有任何想法吗?谢谢,

EDIT 我开始认为这可能与CORS有关,因为我的旧php服务器在另一台机器上,而新节点在我自己的机器上 . 可能是吗?在这种情况下如何解决?

1 回答

  • 0

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

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

    易于使用,只需在我的Node服务器中的任何中间件之前添加 app.use(cors()); .

相关问题