Node.js nodeJS,使用http.request丢失会话
我正在使用nodeJS开发一个应用程序,在我登录我的应用程序之后,我需要得到一个http请求,但是我有一个302状态响应,我被重定向到login。 我想我需要在http请求中发送Cookie会话信息。。这怎么可能 这是我的密码: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:
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