Cómo mantener una session de request en NodeJS

NodeJS utilizar NodeJS para NodeJS un website que requiere un inicio de session mediante POST . Luego, una vez que estoy conectado, puedo acceder a una página web separada por GET .

El primer problema ahora es iniciar session. He intentado utilizar la request para POST la información de inicio de session, pero la respuesta que recibo no parece haber iniciado session.

 exports.getstats = function (req, res) { request.post({url : requesturl, form: lform}, function(err, response, body) { res.writeHeader(200, {"Content-Type": "text/html"}); res.write(body); res.end(); }); }; 

Aquí solo estoy reenviando la página que recibo, pero la página que recibo todavía muestra el formulario de inicio de session, y si bash acceder a otra página, me dice que no estoy conectado.

Creo que necesito mantener la session del cliente y los datos de las cookies, pero no puedo encontrar resources que me ayuden a entender cómo hacerlo.


Como seguimiento terminé usando zombiejs para get la funcionalidad que necesitaba

Debe crear un contenedor de cookies y usar el mismo contenedor para todas las requestes relacionadas.

  var cookieJar = request.jar(); request.post({url : requesturl, jar: cookieJar, form: lform}, ... 

En teoría, esto debería permitir raspar páginas con GET como usuario conectado, pero solo una vez que obtenga el código de inicio de session real funcionando. Según su descripción de la respuesta a su POST de inicio de session, puede que en realidad no funcione correctamente aún, por lo que el contenedor de cookies no será de ayuda hasta que solucione primero los problemas en su código de inicio de session.

El request.jar (); no funcionó para mí Así que estoy usando la respuesta de encabezados para hacer otra request como esta:

 request.post({ url: 'https://exampleurl.com/login', form: {"login":"xxxx", "password":"xxxx"} }, function(error, response, body){ request.get({ url:"https://exampleurl.com/logged", header: response.headers },function(error, response, body){ // The full html of the authenticated page console.log(body); }); }); 

De hecho, esta manera está funcionando bien. = D