2012-08-12 742 views
29

我做饼干的会话管理快递的东西是这样的:如何使用superagent使用cookies?

req.session.authentication = auth; 

我验证与东西验证URL像

if(!req.session.authentication){res.send(401);} 

与摩卡的URL现在我建立测试,superagentshould,但我似乎无法找到一种方法来获取/设置超灵敏的cookie。我甚至试图请求登录之前进行身份验证测试,但它不起作用,

我已经尝试在摩卡BDD套件的前声明中添加请求到登录,但它仍然告诉我,请求是未经授权,我已经测试了从浏览器执行请求的身份验证,但是它不适用于套件中的任何想法为什么?

回答

28

使用superagent.agent()(而不是普通的旧的superagent)使请求具有持久性cookie。请参阅'Preserving cookies' in the superagent docs或代码示例:agency.jscontroller.test.js

+2

注意'superagent.agent()'有[严重,无证在如何处理Cookie问题(https://github.com/visionmedia/superagent/issues/352)对于大多数请求定义 - 任何比get(url,opts,cb)更复杂的东西都需要挂钩到未公开的私有方法中。 – 2015-03-07 04:32:50

+3

事实上,文档中也没有提到Cookie。我真的开始喜欢这个图书馆,并且因为作者而抱有很高的期望,但是如果你想使用会话cookie,结果是没用的。 – 2015-09-03 18:51:39

+1

这并没有工作/如果它做到这一点是不够的...可以有人提供一个例子,说明如何工作.... – Zargold 2015-09-17 16:14:20

13

似乎下面的代码工作正常;

req.set('Cookie',“cookieName1 = cookieValue1; cookieName2 = cookieValue2”);

+0

好男人 - 这是一个答案的宝石! – danday74 2017-03-03 00:47:53

1

既然你提到你需要都得到设置Cookie:

得到:

const request = await Superagent.get('...') 

const cookie = request.header['set-cookie'] 

集:

Superagent.post('...').set('Cookie', 'cookie_info') 
4

如果问题是在发送的cookie对于CORS请求使用.withCredentials()方法 described here

request 
    .get('http://localhost:4001/') 
    .withCredentials() 
    .end(function(err, res) { })