你怎么能用超级饼干?

Kur*_*aki 33 mocha.js node.js superagent

我正在使用express这样的cookie进行cookie会话管理:

req.session.authentication = auth;
Run Code Online (Sandbox Code Playgroud)

我用类似的东西验证了经过身份验证的网址

if(!req.session.authentication){res.send(401);}
Run Code Online (Sandbox Code Playgroud)

现在,我要建与摩卡的URL测试的SuperAgent应该,但我似乎无法找到一种方式来获得/设定SuperAgent的饼干.我甚至尝试在经过身份验证的测试之前请求登录,但它无法正常工作,

我已经尝试将请求添加到mocha BDD套件的before语句中的登录,但是它仍然告诉我该请求是未经授权的,我已经测试了执行来自浏览器的请求的身份验证,但它无法正常工作套房任何想法为什么?

Gau*_*rav 29

使用superagent.agent()(而不是普通旧superagent)来使请求具有持久性cookie.请参阅superagent文档中的"保留cookie"或代码示例:agency.js,controller.test.js.

  • 事实上,文档也没有提到cookie.我真的开始喜欢这个库,并且因为作者而寄予厚望,但如果你想使用会话cookie,它就会变得毫无用处. (4认同)
  • 请注意,对于大多数请求定义,`superagent.agent()`[处理cookie的方式存在严重的,未记录的问题](https://github.com/visionmedia/superagent/issues/352) - 比`get更复杂(url,opts,cb)`需要挂钩到未记录的私有方法. (3认同)
  • 这行不通/如果真的行不通的话...有人可以提供一个工作原理的例子吗... (2认同)

Teo*_*ahi 17

似乎以下代码工作正常;

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


小智 9

如果问题是在发送CORS请求的cookie时使用此处描述的.withCredentials()方法

request
  .get('http://localhost:4001/')
  .withCredentials()
  .end(function(err, res) { })
Run Code Online (Sandbox Code Playgroud)


BAR*_*BAR 5

由于您提到您需要同时获取设置 cookie:

得到:

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

const cookie = request.header['set-cookie']
Run Code Online (Sandbox Code Playgroud)

放:

Superagent.post('...').set('Cookie', 'cookie_info')
Run Code Online (Sandbox Code Playgroud)