如何从请求模块响应存储 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 })
我正在使用私有 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 })