Cookie不与request.js一起发送

时间:2014-05-19 02:33:37

标签: node.js cookies request

所以我启动并运行了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请求的授权。我似乎无法弄清楚我做错了什么。任何建议或帮助将不胜感激。

1 个答案:

答案 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);
    });
});