Получить cookie с помощью nodejs - PullRequest
0 голосов
/ 02 марта 2012

Я делаю вызов Rest в nodejs, чтобы получить отчет от JasperSoft Server. А также Мне нужно получить печенье, чтобы оставаться на связи, но я не знаю, как его получить

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();

Так что это работает, но тогда я хочу иметь доступ к другой ссылке, как : Локальный: 8080 / JasperServer / Ressource / отчеты И мне нужно печенье, чтобы сделать это. Как мне это сделать?

Для вашей информации: console.log ('HEADERS:' + JSON.stringify (res.headers)); отобразить cookie, путь и некоторые другие вещи, так что, возможно, мне просто нужно разобрать его и получить оттуда cookie, но я не знаю, как это сделать.

Кроме того, как я уже сказал, я хочу перейти на другую ссылку после подключения, поэтому вы также можете помочь мне установить cookie для другой ссылки?

1 Ответ

7 голосов
/ 02 марта 2012

Изучите использование модуля запросов Mikeal Rogers . Он имеет встроенную обработку файлов cookie, отслеживает перенаправления и другие полезности. Это также немного более простой API, чем http.request. Ваши куки должны работать только после входа в систему.

Обновление: Образец с 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);
    });
});
...