Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodeJS,使用http.request丢失会话_Node.js_Http_Session_Cookies - Fatal编程技术网

Node.js nodeJS,使用http.request丢失会话

Node.js nodeJS,使用http.request丢失会话,node.js,http,session,cookies,Node.js,Http,Session,Cookies,我正在使用nodeJS开发一个应用程序,在我登录我的应用程序之后,我需要得到一个http请求,但是我有一个302状态响应,我被重定向到login。 我想我需要在http请求中发送Cookie会话信息。。这怎么可能 这是我的密码: var http = require('http'); var options = { //host: "siadmigo.siadmiservice.com", host: "localhost", path:

我正在使用nodeJS开发一个应用程序,在我登录我的应用程序之后,我需要得到一个http请求,但是我有一个302状态响应,我被重定向到login。 我想我需要在http请求中发送Cookie会话信息。。这怎么可能

这是我的密码:

var http = require('http');

    var options = {
        //host: "siadmigo.siadmiservice.com",
        host: "localhost",
        path: "/" + model + "/config/",
        port: '1337',
        withCredentials: true,
        method: 'GET'
    };

    var req = http.request(options, function(res) {

        console.log("Got response: " + res.statusCode);

        var body = '';
        res.on('data', function(chunk) {
            body += chunk;
        });
        res.on('end', function() {
            console.log(body);
            return callback(null, body);
        });

    }).on('error', function(e) {
        console.log("Got error: " + e.message);
        return callback(e, null);
    });

    req.end();

当您需要内置HTTP模块不提供的功能时,您可以考虑使用(例如处理重定向和记住cookies)。除了设置

jar:true
外,您还需要
npm安装硬cookie
,如下所示:

var request = require('request');

// ...

// _request() will maintain a cookie jar across multiple calls to _request()
var _request = request.defaults({jar: true});
_request('http://localhost:1337/' + model + '/config/' , function(err, res, body) {
  callback(err, body);
});
或者使用单独的cookie jar,而不是单独的
request()
,并设置默认值:

var request = require('request');

// ...

var jar = request.jar();
request({
  url: 'http://localhost:1337/' + model + '/config/',
  jar: jar
}, function(err, res, body) {
  callback(err, body);
});
与第二种解决方案的折衷是,您可以将
jar
对象传递给其他
request()
实例,而不管它们的默认值是什么。但是,您还必须手动为每个
request()
指定要在哪里使用这些cookie的
jar