mad*_*e94 2 javascript http angular
我正在使用 Angular 2.2.3 并使用 rxjs 使用 observables 执行 http 请求。标头显示在 Chrome 控制台中,但响应中标头对象上的标头列表为空。这是代码:
登录功能
login(body: Object): Observable<Response> {
return this.http.post(this.url, body);
}
Run Code Online (Sandbox Code Playgroud)
订阅可观察对象的登录函数调用
this.authService.login(values).subscribe(res => {
console.log(res.headers.get("Authorization"))
console.log(res)
},
err => {
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
有什么我做错了或者我应该做不同的事情吗?
Chrome 网络控制台响应标头
Console.log 结果
该null值为res.headers.get("Authorization")
如您所见,标题列表为空。

非常感谢您的帮助!
我已经找到了解决我的问题的方法。事实证明,Angular在幕后使用了XMLHttpRequest。因此,可以“以编程方式”(使用 Angular 的函数)向客户端显示的标头必须在标头列表中Access-Control-Expose-Headers。当我们将请求发送回客户端时,必须在后端创建此列表。这是我使用 ExpressJS 执行的操作以启用 Authorization 标头:
app.use((req, res, next) => {
// List of headers that are to be exposed to the XHR front-end object
res.header('Access-Control-Expose-Headers', 'Authorization');
next();
});
Run Code Online (Sandbox Code Playgroud)
我在前端初始码保持不变并且console.log所述的Authorization报头现在显示。
整个文档非常有趣,我认为我在 API 方面做得很好,但在阅读本文时我学到了很多 :-)
| 归档时间: |
|
| 查看次数: |
4047 次 |
| 最近记录: |