首页 > 解决方案 > 为什么我在 Angular 中的不记名令牌在 Firefox 中不可见

问题描述

我的功能如下所示:

  testFunctionAuth() {
    const promise = new Promise((resolve, reject) => {
      this.http.get(AppConfigService.settings.apiServer.rest + 'systems/all', { headers: { 'Authorization': 'Bearer eyJ...rxbwcO-w' } })
        .subscribe(res => {
          resolve(res);
        },
          err => {
            console.error(err);
            reject(undefined);
          });
    });

  }

但是我得到了 401,并且在标题中,甚至缺少 Auth 令牌:

在此处输入图像描述

同样奇怪的是,Firefox 说 Method 是 OPTIONS 而不是 GET。为什么? 在此处输入图像描述

标签: angularhttpauthentication

解决方案


根据 CORS 规范,在没有身份验证标头的情况下执行 OPTIONS 请求。但是,您的后端似乎验证了用户凭据,但由于标头中没有身份验证令牌,服务器返回401(未授权)。

来自https://stackoverflow.com/a/40723041

根据 CORS规范,当执行预检请求时,用户凭据被排除在外。

(...) 使用方法 OPTIONS,并具有以下附加约束:

  • (...)
  • 排除作者请求标头。
  • 排除用户凭据。
  • (...)

(重点是我的)

考虑到这一点,问题似乎出在 API 方面,它应该接受OPTIONS请求而不需要身份验证


推荐阅读