获取nodejs的cookie

Lou*_*uis 0 cookies rest node.js jasperserver

我在nodejs中进行Rest调用以从JasperSoft Server获取报告.我需要一个cookie来保持连接,但我不知道如何做到这一点

var http = require('http');
var options = {
  host: '127.0.0.1',
  port: 8080,
  path: '/jasperserver/rest/login?j_username=jasperadmin&j_password=jasperadmin',
  method: 'POST'
};

http.request(options, function(res) {

  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));

  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);

  });
}).end();
Run Code Online (Sandbox Code Playgroud)

所以它工作,但后来我想访问另一个链接,如:localhost:8080/jasperserver/ressource/reports我需要cookie来做到这一点.我该怎么做才能搞定?

对于你的信息,console.log('HEADERS:'+ JSON.stringify(res.headers)); 显示cookie和路径以及其他一些东西,所以也许我只需要解析它并从那里获取cookie但我不知道该怎么做.

此外,正如我所说,我想在连接后转到另一个链接,那么你还可以帮我设置另一个链接的cookie吗?

Lin*_*iel 7

考虑使用Mikeal Rogers的请求模块.它具有内置的cookie处理,跟随重定向和其他好东西.它也比API更简单http.request.您的cookie应该在登录后才能正常工作.

更新:request(npm install request)的示例:

var request = require("request");

request.post({url: "http://localhost:8080/jasperserver/rest/login", qs: {j_username: "jasperadmin", j_password: "jasperadmin"}}, function(err, res, body) {
    if(err) {
        return console.error(err);
    }

    request.get("http://localhost:8080/jasperserver/ressource/reports", function(err, res, body) {
        if(err) {
            return console.error(err);
        }

        console.log("Got a response!", res);
        console.log("Response body:", body);
    });
});
Run Code Online (Sandbox Code Playgroud)