node.js - 请求在 cookieJar 中设置 cookie,包括子域

标签 node.js cookies node-request

我有一堆 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

因此,我创建了ough-cookie 并添加域名:'.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 上进行了讨论。也是。

关于node.js - 请求在 cookieJar 中设置 cookie,包括子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39145030/

相关文章:

node.js - fromAuthHeaderAsBearerToken 在 NODE 中不起作用

cookies - 禁用谷歌加一键设置的cookies

具有自动 ntlm/kerberos 身份验证的 node.js HTTP 请求

JSON - 多行字符串输出的数组错误 Node js | Node 请求

javascript - 如何将函数作为回调传递?

angularjs - 删除函数的 API 不再工作并且不会从数组中删除任何内容?

node.js - EC2 卡住安装 NodeJS 包 NPM/Yarn - AWS

javascript - 在域上设置 cookie 并在子域上获取它

php - 保护 PHP 文件

node.js - 具有 Alexa 技能的 Node JS 回调