【发布时间】:2017-11-27 10:25:40
【问题描述】:
我在请求标头中设置 JWT 时遇到问题。以下是我构建请求的方式:
const headers = { 'x-access-token' : this.token };
const config = { headers: headers };
return this.http.get(this.allStudentsUrl, config)
.toPromise()
.catch((error) => this.handleError(error))
.then((response) => this.handleStudents(response));
当我逐步完成时,这看起来很完美,但它是通过带有令牌的服务器来的。在服务器上,标头如下所示:
-= 编辑 =-
为了回答一些问题,我实际上开始使用 Headers 和 RequestOptions 类,这给了我奇怪的结果,所以我转而使用对象文字来尝试简化。这就是我所拥有的:
let headers = new Headers();
headers.append('x-access-token', this.token);
let config = new RequestOptions({ headers: headers });
return this.http.get(this.allStudentsUrl, config)
.toPromise()
.catch((error) => this.handleError(error))
.then((response) => this.handleStudents(response));
但是当我将标记附加到标头时,它只会重复值中的键。这是调试窗口的屏幕截图。
如您所见,即使我将键设置为 x-access-token 并将值设置为令牌(我检查它以验证它实际上是令牌),标头也将 x-access-token 作为键和值。
我也可以通过检查来验证令牌是否是正确的令牌。这是一个截图:
--== 更多信息 ==--
如果我从邮递员那里发送请求,它就可以工作。这是 Postman 的请求:
这就是通过 Node 实现的:
这是我在 Angular 中的要求:
这就是通过 Node 实现的:
【问题讨论】:
-
你可以尝试使用 angulars Headers & RequestOptions 类 (blogs.msmvps.com/theproblemsolver/2016/12/16/…)
-
@LLai 我以这种方式开始并遇到了同样的问题。这是我试图简化的结果。请查看我的编辑。
-
this.token 设置在哪里?是否可能是相同的字符串'x-access-token'?
-
在我验证用户时设置。这不是同一个字符串。我会发一张照片。
-
您发布的调试窗口是正确的。 _normalizedNames 仅包含标题键。如果您查看 _headers,您应该会看到实际值
标签: angular angular2-jwt