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"));
我知道有很多人问过类似的问题(请参阅
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"));