如何从 JavaScript (Angular 2/4) 中的授权标头中检索承载令牌?

Dev*_*ike 5 javascript header jwt angular

在 JavaScript 中,我有一种方法可以通过 http post 请求成功验证我的服务器。

来自我的服务器的响应数据在 Authorization 标头中发送 JWT,如下所示:

Authorization: Bearer mytoken12345abc
Run Code Online (Sandbox Code Playgroud)

我可以从我的服务器响应数据中成功检索授权标头,例如:

let authheader = response.headers.get('Authorization');
Run Code Online (Sandbox Code Playgroud)

但是我该如何解析呢?“Bearer”是钥匙吗?所以像:

let token = authheader.Bearer 
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的。我接下来可以尝试什么?

换句话说,以下是最好的方法吗?

let token = response.headers.get('Authorization');
let parsedToken = token.slice(7);
Run Code Online (Sandbox Code Playgroud)

Tom*_*myF 5

根据 jwt.io 文档,

每当用户想要访问受保护的路由或资源时,用户代理应该发送 JWT,通常在使用 Bearer 模式的 Authorization 标头中。

因此,在 Authorization 标头中使用 JWT 应该由客户端使用,而不是服务器用于初始响应。

正确的方法是获取令牌作为响应正文的一部分。我们使用一个

 { jwt: TOKEN } 
Run Code Online (Sandbox Code Playgroud)

类型方案。然后您可以通过您的response.json().

您可以直接使用访问标头值,response.headers.get(...)但随后您必须使用split,substr或 regex-match 来获取实际令牌。