【问题标题】:How to store cookies client-side from request module response如何从请求模块响应中存储cookie客户端
【发布时间】:2020-05-08 19:11:31
【问题描述】:

我正在使用私有 API 创建一个带有电子的桌面应用程序。当我提出请求时,我在 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']
  }
})

【问题讨论】:

    标签: node.js cookies electron node-request


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!我已经设法做到了。我没有使用 globar jar cookie,但我使用了 strong-cookie-filestore 作为 jar 来保留我的 cookie,即使在应用程序关闭后也是如此
    【解决方案2】:

    设法使用 request 和 strong-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 })
    

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 2019-01-09
      • 2022-12-03
      • 2021-03-16
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 2018-10-12
      相关资源
      最近更新 更多