Cookie不会使用request.js发送

所以我有一个API启动,但是我决定从使用nano切换到只使用请求 。 但是由于某种原因,我似乎无法得到cookie现在发送回服务器。 这里是我testing的代码的一个例子。

var request = require('request') var cookieJar = request.jar(); var myCookie; request({ method: 'POST', uri: 'http://127.0.0.1:5984/_session', form: { name: 'test', password: 'test123' } }, function(err, res, body) { if (err) { console.log(err) }; console.log(res.statusCode); console.log(res.headers); console.log(body); myCookie = request.cookie(res.headers['set-cookie'][0]); cookieJar.setCookie(myCookie, 'http://127.0.0.1:5984/_session'); }); request({ method: 'GET', uri: 'http://127.0.0.1:5984/db', jar: cookieJar }, function(err, res, body) { if (err) { console.log(err) }; console.log(cookieJar); console.log(res.statusCode); console.log(res.headers); console.log(body); }); 

正如你所看到的,我可以获取和设置cookie,但是我没有获得GET请求的授权。 我似乎无法弄清楚我做错了什么。 任何意见或帮助将不胜感激。

请求是asynchronous的,所以你的两个请求是同时进行的(在你的cookieJar被设置之前)。 试试这个:

 var request = require('request') request({ method: 'POST', uri: 'http://127.0.0.1:5984/_session', form: { name: 'test', password: 'test123' } }, function(err, res, body) { if (err) { return console.log(err) }; console.log(res.statusCode); console.log(res.headers); console.log(body); var myCookie = request.cookie(res.headers['set-cookie'][0]); var cookieJar = request.jar(); cookieJar.setCookie(myCookie, 'http://127.0.0.1:5984/_session'); request({ method: 'GET', uri: 'http://127.0.0.1:5984/db', jar: cookieJar }, function(err, res, body) { if (err) { return console.log(err) }; console.log(cookieJar); console.log(res.statusCode); console.log(res.headers); console.log(body); }); });