繁体   English   中英

Angular 2 http Observable请求未返回响应头

[英]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网络控制台响应标头

这是“肯定存在授权”的Chrome控制台中的响应

Console.log结果

null值为res.headers.get("Authorization")如您所见,标头列表为空。 Chrome控制台

非常感谢您的帮助!

我已经找到解决问题的方法。 事实证明,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM