Angular 4 HttpClient无法看到headers

15 浏览
0 Comments

Angular 4 HttpClient无法看到headers

我正在尝试获取响应中的头信息,根据文档,我可以在我的POST调用的选项中添加observe: 'response'来实现。我已经这样做了,但我只能访问content-type头,而我需要访问3个自定义头。以下是代码:

public login(username: string, password: string): Observable {
  // 这只是对数据进行编码
  let data = this.formEncode({
    username: username,
    password: password
  })
  let headers: HttpHeaders = new HttpHeaders()
    .set('Content-Type', 'application/x-www-form-urlencoded')
    // 我也尝试过下面的方法,但没有效果
    // .set('Access-Control-Expose-Headers', 'X-Custom-Header-Name')
  return this.http.post(
    ["www.foobar.com", "users", "login"].join("/"),
    data,
    {
      headers: headers,
      observe: 'response'
    }
  )
  .map((res) => {
    console.log(res)
    console.log(res.headers.getAll('Content-Type'))
    console.log(res.headers.getAll('Set-Cookie'))
    console.log(res.headers.getAll('X-Custom-Header-Name'))
    console.log(res.headers.keys())
    return res.body
  })
}

我知道这里有很多日志,它们都是为了验证我只能在任何情况下访问content-type是唯一的响应头。此外,在Chrome或Firefox开发工具中检查,响应中有头信息。

那么,我在这里做错了什么?Angular只允许您访问特定的头信息吗?头信息在函数的map部分中不可用吗?

另外,我尝试这样做的唯一原因是因为cookie没有正确设置,但我相当确定这不是Angular的问题。

编辑:我还尝试使用@angular/http中的Http,结果相同。

0
0 Comments

Angular 4的HttpClient无法查看头文件

在使用Angular 4的HttpClient时,发现无法读取响应的头文件,即使不是跨域问题。经过查找,找到了解决方法。我正在运行一个Node/Express后端,因此在配置Express应用程序的中间件时(添加CORS支持等),我必须添加以下响应头:

res.header("access-control-expose-headers",
    +"X-Custom-Header-Name"
    +",Set-Cookie"
);

详细配置请参见我的问题的链接

以上就是使用Angular 4的HttpClient无法查看头文件的原因和解决方法。

0