rest - 使用nodejs获取cookie

标签 rest node.js cookies jasperserver

我正在nodejs中进行Rest调用以从JasperSoft服务器获取报告。 和 我需要获取 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();

所以它可以工作,但是我想访问另一个链接,例如 :本地主机:8080/jasperserver/资源/报告 我需要 cookie 来做到这一点。我怎样才能得到它?

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

此外,正如我所说,我想在连接后转到另一个链接,所以你能帮我为另一个链接设置 cookie 吗?

最佳答案

考虑使用Mikeal Rogers' request module 。它具有内置的 cookie 处理、遵循重定向和其他优点。它的 API 也比 http.request 简单一些。您的 cookie 应该在登录后才起作用。

更新:带有请求的示例(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);
    });
});

关于rest - 使用nodejs获取cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536516/

相关文章:

Python 请求 - 管理 cookie

http - cookie 值是否应该进行 URL 编码?

http - 与 RestSharp 的持久 HTTP 连接

php - 使用 PUT 上传 yii2 REST Api 文件

javascript - 通过名称从同一个 `module.exports` 对象调用一个函数

mysql - Sequelize 错误 - lodash 没有方法 "template"

javascript - cookie 过期不起作用,这是错误的吗?

java - Jersey Queryparam 不接受带有 "+"符号的整数值

java - Spring-Boot REST 服务基本 http auth 排除一个端点

javascript - 意外的响应代码 : 200