我正在使用express进行cookie会话管理:
req.session.authentication = auth;
我使用类似
的方式验证经过身份验证的网址if(!req.session.authentication){res.send(401);}
现在我正在使用mocha,superagent和should构建网址测试,但是我似乎找不到用superagent获取/设置cookie的方法。我甚至尝试在经过身份验证的测试之前请求登录,但它无法正常工作,
我已经尝试将请求添加到mocha BDD套件的before语句中的登录,但是它仍然告诉我该请求是未经授权的,我已经测试了来自浏览器的请求的身份验证,但它不是从套房工作任何想法为什么?
答案 0 :(得分:29)
使用superagent.agent()
(而不是普通的旧superagent
)来使请求具有持久性Cookie。请参阅'Preserving cookies' in the superagent docs或代码示例:agency.js,controller.test.js。
答案 1 :(得分:16)
似乎以下代码工作正常;
req.set('Cookie',“cookieName1 = cookieValue1; cookieName2 = cookieValue2”);
答案 2 :(得分:8)
如果问题在于为CORS请求发送cookie,请使用.withCredentials()
方法
described here
request
.get('http://localhost:4001/')
.withCredentials()
.end(function(err, res) { })
答案 3 :(得分:2)
既然你提到你需要让和设置cookie:
得到:
const request = await Superagent.get('...')
const cookie = request.header['set-cookie']
集:
Superagent.post('...').set('Cookie', 'cookie_info')