Angular 7的HttpHeaders为空。

9
我理解HttpHeaders是不可变的。我尝试了几种不同的初始化方法或添加到它们中,但当我记录它们时,它总是显示为空。
我已经尝试使用所有值进行初始化:
const headers = new HttpHeaders({
  'Authorization': `Bearer ${this.auth.accessToken}`,
  'Content-Type': 'application/json'
});

我尝试过设置:

let headers = new HttpHeaders();
headers = headers.set('Authorization', `Bearer ${this.auth.accessToken}`);
headers = headers.set('Content-Type', 'application/json');

我尝试过添加:

let headers = new HttpHeaders();
headers = headers.append('Authorization', `Bearer ${this.auth.accessToken}`);
headers = headers.append('Content-Type', 'application/json');

但是所有结果都没有头部信息,API 表示找不到任何授权令牌。

控制台输出:

http 头部信息的控制台输出

我做错了什么?


你是如何在http调用中设置它们的? - Phix
以下是我设置的方式,但我无法想象这会解释为什么在记录它们之前它们为空(在进行此调用之前)return this.http.post<ZTask>('/api/ztask', ztask, { headers: headers }) - Trevor
我明白你的意思。如果你执行 headers.keys().forEach(x => { console.log(headers.get(x)) }),你就可以看到它们在那里了。希望有人能够帮助你解决这个 Angular 的问题! - Phix
如果您正在记录它,可以使用headers.getAll('Authorization'),但更好的检查位置将是DevTools中的网络选项卡。 - sabithpocker
1个回答

6

这可能是由于 惰性解析 导致的,您需要执行 get 来访问值。未实现为键值对。

HttpHeaders 类表示 HTTP 请求的标头配置选项。应该假定实例是不可变的,并具有惰性解析。

执行 console.log(headers.getAll('Authorization'))

但是,为确保标头被发送,更好的检查位置将在 DevTools 中的 网络选项卡 中。


这就是为什么它没有记录日志的原因。谢谢。 - Trevor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接