Angular 4 HttpClient无法看到headers
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
,结果相同。
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无法查看头文件的原因和解决方法。