如何从请求模块响应存储 cookie 客户端

How to store cookies client-side from request module response

我正在使用私有 API 创建一个带有 electron 的桌面应用程序。当我发出请求时,我在 res.headers 中获得了 set-cookie,但我不知道如何将其存储在本地。 首先,我将每个 cookie 存储在一个变量中,因此最后一个 set-cookie 覆盖了旧的,但通过进一步研究,我发现 cookie 不是那样工作的,我需要合并新旧 cookie 响应,但我没有知道怎么做了。

我发现的一切都只是在服务器端设置一个新的 cookie,而不像浏览器那样。

let cookies

request({
  uri: myUrl,
  method: 'GET'
}, function (err, res, body) {
  if (err) {}
  if (res.headers['set-cookie']) {
    cookies = res.headers['set-cookie']
  }
})

如果您只想记住现有的 cookie,则无需手动处理这些 cookie。

request GitHub page 中的以下示例提出了两个后续请求。第二个请求将拥有第一个请求设置的所有 cookie。

const request = request.defaults({jar: true})
request('http://www.google.com', function () {
  request('http://images.google.com')
})

设法使用请求和 tough-cookie-filestore 来保存数据

var request = require('request')
const FileCookieStore = require('tough-cookie-filestore');
// NOTE - currently the 'cookies.json' file must already exist!
const j = request.jar(new FileCookieStore('./cookie.json'));
request = request.defaults({ jar : j })