Angular 4 HttpClient 无法看到 headers
Angular 4 HttpClient not able to see headers
我正在尝试访问响应中的 header,docs 说我可以通过将 observe: 'response'
添加到 [=39] 的选项中来实现=] 呼叫.
我已经做到了,但是我唯一能够访问的 header 是 content-type
,我需要访问 3 个自定义 header。这是代码:
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
实际上是我在任何情况下都可以访问的唯一响应 header这些情况。此外,在 Chrome 或 Firefox 开发工具中检查后,响应中有 header。
那么,我做错了什么? Angular 是否只有某些 header 允许您访问? header 函数的 map
部分不可用吗?
在其他消息中,我尝试这样做的唯一原因是 cookie 设置不正确,但我很确定这不会是 Angular 问题。
编辑: 我也尝试使用 @angular/http
中的 Http
,得到相同的结果
好的,刚刚找到解决方案,同样的问题在这里。我是 运行 一个 Node/Express 后端,所以在配置 Express 应用程序的中间件(添加 CORS 支持 & co)时,我必须添加以下响应 header:
res.header("access-control-expose-headers",
+"X-Custom-Header-Name"
+",Set-Cookie"
);
有关完整配置,请参阅 my question。
我正在尝试访问响应中的 header,docs 说我可以通过将 observe: 'response'
添加到 [=39] 的选项中来实现=] 呼叫.
我已经做到了,但是我唯一能够访问的 header 是 content-type
,我需要访问 3 个自定义 header。这是代码:
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
实际上是我在任何情况下都可以访问的唯一响应 header这些情况。此外,在 Chrome 或 Firefox 开发工具中检查后,响应中有 header。
那么,我做错了什么? Angular 是否只有某些 header 允许您访问? header 函数的 map
部分不可用吗?
在其他消息中,我尝试这样做的唯一原因是 cookie 设置不正确,但我很确定这不会是 Angular 问题。
编辑: 我也尝试使用 @angular/http
中的 Http
,得到相同的结果
好的,刚刚找到解决方案,同样的问题在这里。我是 运行 一个 Node/Express 后端,所以在配置 Express 应用程序的中间件(添加 CORS 支持 & co)时,我必须添加以下响应 header:
res.header("access-control-expose-headers",
+"X-Custom-Header-Name"
+",Set-Cookie"
);
有关完整配置,请参阅 my question。