如何使用cookie进行请求(request,tough-cookie,node.js)

7
我想知道如何在使用request (https://github.com/mikeal/request)时使用cookie。

我需要设置一个能够从请求中获取到的cookie,可以在每个子域名下使用,类似于

*.examples.com

并且路径应该是对于每个页面都通用的,类似于

/

这样服务器端就能正确地从cookie中获取数据,例如

test=1234

我发现从响应中设置的cookie可以正常工作,

我添加了自定义jar来保存cookie,类似于

var theJar = request.jar();

var theRequest = request.defaults({
            headers: { 
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36' 
            } 
          , jar: theJar
        });

但是,我从请求中设置的cookies只能在同一域名下获取,
我找不到一种方法来设置更多的cookie选项。
目前,如果我想要一个cookie能够在三个子域中获取,
我必须按照以下方式进行设置:
theJar.setCookie('test=1234', 'http://www.examples.com/', {"ignoreError":true});

theJar.setCookie('test=1234', 'http://member.examples.com/', {"ignoreError":true});

theJar.setCookie('test=1234', 'http://api.examples.com/', {"ignoreError":true});

有没有更高级的方法可以从请求中设置一个cookie,使它能够在每个子域中被获取?
1个回答

13

我刚刚找到了解决方案....

theJar.setCookie('test=1234; path=/; domain=examples.com', 'http://examples.com/');

嗯......我不得不说,这份要求的文件质量并不好...哈哈


1
我正在向本地主机发起HTTP请求,但是cookie没有随请求一起传递。如何使用带有jar:true的请求确保cookie在标头中被携带? - Nicolas S.Xu
setCookie看起来非常奇怪...它不能自动检测“secure”,也不能从我传递的URL设置域,使用“ignoreError”会导致回调永远不会被调用。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接