Angular 4 HttpClient无法查看标题

时间:2017-09-06 15:58:20

标签: javascript angular cookies http-headers angular2-http

我试图访问响应中的标题,docs我可以通过将observe: 'response'添加到POST调用的选项中来执行此操作。

我已经完成了,但我能够访问的唯一标头是content-type,我需要访问3个自定义标头。这是代码:

public login(username: string, password: string): Observable<LoginResponse> {

  // this just encodes the data
  let data = this.formEncode({
    username: username,
    password: password
  })

  let headers: HttpHeaders = new HttpHeaders()
    .set('Content-Type', 'application/x-www-form-urlencoded')
    // i've also tried below, but it didn't work
    // .set('Access-Control-Expose-Headers', 'X-Custom-Header-Name')

  return this.http.post<LoginResponse>(
    ["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问题。

修改:我还尝试使用Http中的@angular/http,并获得相同的结果

1 个答案:

答案 0 :(得分:1)

好的,刚刚找到解决方案,同样的问题在这里。我正在运行Node / Express后端,因此在配置Express应用程序的中间件(添加CORS支持&amp; co)时,我必须添加以下响应头:

{{1}}

有关完整配置,请参阅my question