superagent中的agent方法如何保存cookie

大鱼头
  • 12

新人求助,现在在node上用superagent发送请求访问几个端口,需要将第一个请求获取到的cookie保存下来,让后面的请求继续使用,正好在官方文档发现这个库里面有专门的agent()方法,但是官方文档给出的例子看不太明白

const agent = request.agent();
agent
  .post('URL')
  .then(() => {
    return agent.get('/cookied-page');
  });

试了下打印agent好像结果都是cookiejar对象?所以想请教一下这个/cookied-page是什么....现在我想要将请求返回的cookie保存在一个全局变量中该怎么写呢

回复
阅读 6k
1 个回答
In Node SuperAgent does not save cookies by default, but you can use the .agent() method to create a copy of SuperAgent that saves cookies. Each copy has a separate cookie jar.

意思是说你用agent对象发的请求会保留cookie。/cookied-page只是一个示例url,你换成https://segmentfault.com/也行。
request.agent()返回的对象是request的copy(备份),所以使用API与request一样,原来request.post('/api/pet')改成使用agent.post('/api/pet')即可,agent会保存cookie,下次发请求时会带上。
比如你先登录:

 agent
   .post('/api/login')
    //发送用户名密码登录
   .send({ username: '用户名', passwd: '密码' })
    //目标服务器返回 Set-Cookie:loginToken=38afes7a8; HttpOnly; Path=/

之后agent再发请求时会带上用户信息相关的cookieloginToken

读取agent中cookie的方法文档没写,看了下源码是用的cookiejar这个包,大概是agent.jar.getCookie("loginToken", { path: "/" }).value

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏