Javascript JSON 对象的值 "undefined"

Value of Javascript JSON obj "undefined"

嘿,我得到这个响应查询 API 节点获取:

{
  'access-control-allow-credentials': 'true',
  'access-control-allow-headers': 'Origin, Content-Type, Accept, Authorization, X-Request-With, Webpunch-App-Version, X-timezone, X-token',
  'access-control-allow-methods': 'POST, GET, OPTIONS, PUT, DELETE',
  'access-control-allow-origin': 'censored',
  'access-control-max-age': '86400',
  'cache-control': [ 'no-store, no-cache, must-revalidate', 'no-cache, private' ],
  'content-encoding': 'gzip',
  'content-type': 'application/json',
  date: 'Sun, 29 May 2022 13:04:49 GMT',
  expires: 'Thu, 19 Nov 1981 08:52:00 GMT',
  pragma: 'no-cache',
  'set-cookie': [
    'QWFMSESSION=censored; path=/; secure; HttpOnly',
    'api_session=meJMkISigaS2dcHK7kKBzFjWyY4zHiQHnyKOiix4; expires=Sun, 05-Jun-2022 13:04:49 GMT; Max-Age=604800; path=/; secure; httponly; samesite=lax'
  ],
  'strict-transport-security': 'max-age=15724800; includeSubdomains; preload',
  'transfer-encoding': 'chunked',
  vary: 'Accept-Encoding',
  'x-content-type-options': 'nosniff',
  'x-frame-options': 'SAMEORIGIN',
  'x-xss-protection': '1; mode=block'
}

并希望获得 'api_session' 令牌值。当我尝试使用 result['set-cookie'] 时,它 returns 未定义。当我尝试使用 JSON.parse(JSON.stringify(result)) 时,它 returns 是一个空白数组。但是当我复制结果并将其粘贴到另一个 js 文件时,它可以正常工作...这是我的代码:

fetch('censored', {
    method: 'POST',
    headers: {
        censored
    },
    body: censored
    
})
.then(async (res) => {  
    return [await res.json(), res.headers];
  })
  .then(([jsonData, result]) => {
    console.log(result['set-cookie'])
  })
  .catch((err) => {
    // handle error
    console.error(err);
  });
fetch('')
.then(async (res) => {  
  return [await res.json(), res.headers];
})
.then(([jsonData, result]) => {
  console.log(jsonData['set-cookie'])
})
.catch((err) => {
  // handle error
  console.error(err);
});

您需要从 jsonData 而不是结果

中读取

结果包含请求 headers

如果你想从 header 得到 api-session 试试这个

fetch('')
.then(async (res) => {  
  return [await res.json(), res.headers];
})
.then(([jsonData, result]) => {
  console.log(result.get('api_session'))
})
.catch((err) => {
  // handle error
  console.error(err);
});