如何使用请求登录并获取Nodejs中的cookie

时间:2016-06-15 05:09:20

标签: node.js session cookies request

我想使用请求模块登录并获取会话 这是我的代码

var request = require('request');
var cookie;
var headers = {
    'content-type': 'application/json',
    'accept': 'application/json'
};

var form = {
    'email': 'MY_EMAIL',
    'password': 'MY_PASSWORD'
};

request.post({url: 'http://website/login', body: JSON.stringify(form), headers: headers}, function(err, res, body){
    if(err) console.log('login error');

    // get cookie
    var setCookie = res.headers['set-cookie'];
    cookie = setCookie[0].split(' ')[0] + ' ' + setCookie[1].split(' ')[0];

    console.log('login success');
});

获取cookie后,我将cookie放入标题中,我可以做其他需要auth的操作。

var headers = {
    'content-type': 'application/json',
    'accept': 'application/json',
    'cookie': cookie
}

request.get({url: 'http://website/somethingElse', headers: headers}, function(err, res, body){

    console.log(body);

});

如果我像这样使用请求cookie jar。

var request = require('request').defaults({jar: true});

var jar = request.jar();
var headers = {
    'method': 'POST',
    'content-type': 'application/json',
    'accept': 'application/json'
};

var form = {
    'email': 'MY_EMAIL',
    'password': 'MY_PASSWORD'
};

request.post({url: 'http://website/login', jar: jar, body: JSON.stringify(form), headers: headers}, function(err, res, body){
    if(err) console.log('login error');

    console.log(jar);

    console.log('login success');
});

我可以在jar中获取cookie,但我不能使用jar来做其他事情。

var headers = {
    'content-type': 'application/json',
    'accept': 'application/json'
}

request.get({url: 'http://website/somethingElse', jar: jar, headers: headers}, function(err, res, body){

    // I am redirected to the login page.
    // It seems that I haven't login
    console.log(body);
});

我登录网站并成功获取cookie,但我无法使用cookie来执行需要登录的操作。我将被重定向到登录页面并要求再次登录。怎么解决?

0 个答案:

没有答案