[英]Angular 2 http Observable request not returning response header
我正在使用Angular 2.2.3并使用rxjs对可观察对象进行http请求。 标头显示在Chrome控制台中,但是响应中标头对象上的标头列表为空。 这是代码:
登录功能
login(body: Object): Observable<Response> {
return this.http.post(this.url, body);
}
调用登录功能并订阅可观察对象
this.authService.login(values).subscribe(res => {
console.log(res.headers.get("Authorization"))
console.log(res)
},
err => {
console.log(err);
});
我做错了什么还是应该做不同的事情?
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();
});
我在前端的初始代码保持不变,并且现在显示Authorization
标头的console.log
。
整个文档非常有趣,我以为我在API方面还不错,但是在阅读本文时我学到了很多:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.