Node-fetch 承诺响应 属性 打印为未定义

Node-fetch Promise response property prints as undefined

我知道有很多人问过类似的问题(请参阅 and ),但我已经尝试了那里提到的解决方案 我想弄清楚为什么我的 node-fetch 回复不是表现符合预期。这是代码的简单版本:

 fetch(new URL("https://www.whosebug.com")).then(theResponse =>{
      console.log("This prints OK: "); 
      console.log(theResponse.headers);
      console.log("But this prints as undefined:");
      console.log(theResponse.headers["content-encoding"]);
      return theResponse;
})

打印出来的headers是:

{
'accept-ranges': 'bytes',
'cache-control': 'private',
 connection: 'close',
'content-encoding': 'gzip',
 'content-security-policy': "upgrade-insecure-requests; frame-ancestors 'self' https://stackexchange.com",
etc.
}

为什么 theResponse.headers["content-encoding"] 返回为 undefined

您需要使用 .get method of the Headers object:

console.log(theResponse.headers.get("Content-Encoding"));

请注意,与 Map 或对象 属性 访问不同,它不区分大小写。

你也可以使用Headers对象的getAll方法 它return一个数组

console.log(theResponse.headers.getAll("Content-Encoding"));