CORS上缺少Angular 5响应头

时间:2018-01-05 16:01:25

标签: cors angular5 response-headers

在我的角应用程序中,我需要从响应标头中检索位置数据。 服务器(Nginx)配置为允许交叉原点并允许/暴露标题中的位置。我可以在Chrome DEV控制台中看到这一点,但在我的角度应用程序中,我没有看到标题的任何数据。

Access-Control-Allow-Origin: *
Access-Control-Allow-Headers:Location, Content-Type
Access-Control-Expose-Headers:Location, Content-Type

这是我的代码段。

this.httpClient.post( url, {
        UserName: username,
        Password: password
      }
    )
      .subscribe(
        (res: Response) => {
          console.log(res.headers);
        },
        error => {console.log('Error occured::' + error);
        }
      );

console.log(res.headers)返回undefined。

这里出了什么问题?

2 个答案:

答案 0 :(得分:3)

新的HttpClient默认只返回正文。如果您想从响应本身检索任何内容,可以使用选项observe:

  this.httpClient.post(url, {
    UserName: username,
    Password: password
  }, {
    observe: 'response'
  })
  .subscribe(res => {
    console.log(res.headers.get('Location');
  }, error => {
    console.log('Error occured::' + error);
  });

你是对res的类型转换,因此TypeScript没有捕获你的错误。最好在我的示例中删除类型,以便自动正确键入。

答案 1 :(得分:0)

行。有两个问题。正如@Manduro指出的那样,需要在角度请求中添加observe。另一个是我错过了两种标题类型之间的逗号。

https://enable-cors.org/server_nginx.html

需要随时添加'位置配置文件中的关键字