我想使用请求模块登录并获取会话 这是我的代码
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来执行需要登录的操作。我将被重定向到登录页面并要求再次登录。怎么解决?