所以我启动并运行了API,但我决定从使用nano切换到仅使用request。但是我出于某种原因似乎无法将cookie现在发送回服务器。这是我一直在测试的代码示例。
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请求的授权。我似乎无法弄清楚我做错了什么。任何建议或帮助将不胜感激。
答案 0 :(得分:5)
请求是异步的,因此您的两个请求是在同一时间(在设置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);
});
});