请求在 cookieJar 中设置 cookie,包括子域
Requests setting cookies in cookieJar including subdomains
我有一堆 JSON 格式的 cookie。它们是从名为 EditThisCookie.
的插件导出 cookie 的结果
我正在尝试解析 JSON cookie 数组并将它们添加到 cookiejar。我是这样做的:
JSONCookies.forEach(cookie => {
let extensions = [
'session=true',
'sameSite=no_restriction'
];
cookies.push(new ToughCookie.Cookie({
key: cookie.name,
value: cookie.value,
secure: cookie.secure || false,
path: cookie.path,
httpOnly: cookie.httpOnly || false,
extensions: extensions
}));
// Set the uid property of object with users ID
if(cookie.name === 'c_user') {
this.uid = cookie.value;
}
})
我将它们添加到请求的 cookiejar 中:
cookies.forEach(function(cookie) {
cookieJar.setCookie(cookie, 'https://facebook.com', (err, cookie) => {
if(err) {
reject(new Error(err));
return;
}
})
})
... 这很好用。我可以向 Facebook 提出请求并从我们的业务组提取数据。
但是,Facebook 上的许多请求都使用子域。比如upload.facebook.com
。这是行不通的。显然是因为我缺少 cookie 中的 domain
。
因此,我创建了 tough-cookie 并添加了 domain: '.facebook.com'
。除了现在当我发出请求时它失败并出现错误:
Error: Cookie not in this host's domain. Cookie:facebook.com Request:null
如何设置 cookiejar 中的 cookie 以跨子域工作?可能吗?
文档不是很好,我一直无法找到如何执行此操作。我认为这与传递给 setCookie
的 URL 有关。我试图将其更改为不同的变体,但无济于事。
我最近遇到了同样的问题。解决办法是这样做:
cookies.push(new ToughCookie.Cookie({
domain: 'facebook.com'
key: cookie.name,
value: cookie.value,
secure: cookie.secure || false,
path: cookie.path,
httpOnly: cookie.httpOnly || false,
extensions: extensions
}));
.facebook.com
中的前导 .
不是必需的。这也在 tough-cookie github issue 上进行了讨论。
我有一堆 JSON 格式的 cookie。它们是从名为 EditThisCookie.
的插件导出 cookie 的结果我正在尝试解析 JSON cookie 数组并将它们添加到 cookiejar。我是这样做的:
JSONCookies.forEach(cookie => {
let extensions = [
'session=true',
'sameSite=no_restriction'
];
cookies.push(new ToughCookie.Cookie({
key: cookie.name,
value: cookie.value,
secure: cookie.secure || false,
path: cookie.path,
httpOnly: cookie.httpOnly || false,
extensions: extensions
}));
// Set the uid property of object with users ID
if(cookie.name === 'c_user') {
this.uid = cookie.value;
}
})
我将它们添加到请求的 cookiejar 中:
cookies.forEach(function(cookie) {
cookieJar.setCookie(cookie, 'https://facebook.com', (err, cookie) => {
if(err) {
reject(new Error(err));
return;
}
})
})
... 这很好用。我可以向 Facebook 提出请求并从我们的业务组提取数据。
但是,Facebook 上的许多请求都使用子域。比如upload.facebook.com
。这是行不通的。显然是因为我缺少 cookie 中的 domain
。
因此,我创建了 tough-cookie 并添加了 domain: '.facebook.com'
。除了现在当我发出请求时它失败并出现错误:
Error: Cookie not in this host's domain. Cookie:facebook.com Request:null
如何设置 cookiejar 中的 cookie 以跨子域工作?可能吗?
文档不是很好,我一直无法找到如何执行此操作。我认为这与传递给 setCookie
的 URL 有关。我试图将其更改为不同的变体,但无济于事。
我最近遇到了同样的问题。解决办法是这样做:
cookies.push(new ToughCookie.Cookie({
domain: 'facebook.com'
key: cookie.name,
value: cookie.value,
secure: cookie.secure || false,
path: cookie.path,
httpOnly: cookie.httpOnly || false,
extensions: extensions
}));
.facebook.com
中的前导 .
不是必需的。这也在 tough-cookie github issue 上进行了讨论。