繁体   English   中英

无法以角度 5 获取响应标头

[英]Cant get headers of response in angular 5

我向服务器发出一个 post 请求,该请求响应两个对客户端很重要的标头:用户名和访问令牌。 Chrome 调试工具的网络选项卡显示以下响应数据: 在此处输入图片说明

我还在控制台上记录了响应: 在此处输入图片说明

这里没有标题 - 为什么会这样? 我的日志代码:

this.usersService.registerNewUser(firstName, lastName, email, username, birthday, password).subscribe(
          res => {
            console.log(res);
          },
          err => {
            console.log("Error" + JSON.stringify(err));
          }
        );

我想通过res.headers.username访问标题用户名。

我的请求是这样的:

this.http.post<string>(
      "http://localhost:2002/users",
      JSON.stringify({
        firstName: firstName,
        lastName: lastName,
        email: email,
        username: username,
        birthday: birthday,
        password: password
      }),
      {
        observe: "response"
      }
    );

我做错了什么?

除非后端允许,否则前端将无法访问该标头。

为此,您需要从后端发送一个Access-Control-Expose-Headers标头,该值应该是要公开的值的逗号分隔列表,即access-token, username

通常,响应只是“正文”,而您需要“标题”。 在资源上你可以使用:

this.header = res.headers.get('header-name');

只是想提供额外的信息。 昨天花了几个小时,变得疯狂。

一旦您从后端access-control-expose-headers 如果你只是打印像这样的console.log(res)console.log(res.headers)这样的响应对象,它不会显示标题,因为 Angular 使用延迟加载。 您需要明确说明您需要哪个标题console.log(res.headers.get('your-header'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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