Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取angular 5中的响应标题_Javascript_Angular_Http_Post_Request - Fatal编程技术网

Javascript 无法获取angular 5中的响应标题

Javascript 无法获取angular 5中的响应标题,javascript,angular,http,post,request,Javascript,Angular,Http,Post,Request,我向一个服务器发出post请求,该服务器用两个对客户机很重要的头进行响应:用户名和访问令牌。 Chrome调试工具的网络选项卡显示以下响应数据: 我还将响应记录在控制台上: 这里没有标题-为什么会这样? 我的日志代码: this.usersService.registerNewUser(firstName, lastName, email, username, birthday, password).subscribe( res => { c

我向一个服务器发出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"
      }
    );
this.http.post(
"http://localhost:2002/users",
JSON.stringify({
名字:名字,
lastName:lastName,
电邮:电邮,,
用户名:用户名,
生日:生日,
密码:密码
}),
{
注意:“回应”
}
);

我做错了什么?

通常,响应只是“主体”,而您需要“标题”。在res上,您可以使用:

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

前端将无法访问该标题,除非后端允许


为此,您需要从后端发送一个
访问控制暴露头
头,该值应该是一个逗号分隔的要暴露的值列表,即
访问令牌、用户名

只想提供附加信息。昨天花了这几个小时,真是疯了


一旦有了
访问控制,就可以从后端公开头文件。如果您只是像这样打印响应对象
console.log(res)
console.log(res.headers)
,它将不会显示头,因为Angular使用延迟加载。您需要明确说明需要哪个头文件
console.log(res.headers.get('your-header'))

可能是@siddhartajmera的副本,而不是此文件的副本!看看我刚才在问题中添加的请求-我将“观察”字段设置为“响应”!这是
http
的一个
HttpClient
实例吗?您可以尝试从服务器发送
Access-Control-Expose-Headers
响应头一个逗号分隔的要公开的头列表,即
访问令牌,username
但这解决了前端接收到标题后的另一个问题,因为我无法通过headers.field直接读取属性-我必须使用get!