【问题标题】:angular2-jwt missing authorization in headerangular2-jwt 在标头中缺少授权
【发布时间】:2017-07-01 08:00:56
【问题描述】:

我有一个 angular2 应用程序,它使用 jwt 身份验证连接到 express/node 服务器。

我正在使用 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 服务器在另一台机器上,而新节点在我自己的机器上。 会是这样吗?在这种情况下如何解决?

【问题讨论】:

  • 向服务器发出 cors 请求
  • 不知道怎么做,这是要在服务器还是前端配置?还是两者兼而有之?
  • 服务器应配置为传递 cors 请求
  • 但如果这是服务器问题,为什么我在 Chrome 的请求对象中看不到 Authorization 标头?在它到达服务器之前,这不应该是一个“原始”对象吗?
  • 发送到源的请求不同

标签: angular jwt angular2-jwt


【解决方案1】:

所以,万一有人来了,我使用 Express 库解决了这个问题。

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

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

【讨论】:

    猜你喜欢
    • 2016-07-15
    • 2016-03-08
    • 2017-07-29
    • 2012-10-27
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多