我正在使用nodeJS开发应用程序,在我的应用程序中登录后,我需要获取http请求,但我有302状态响应,并且我重定向到登录。 我想我需要用我的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();
答案 0 :(得分:0)
当您开始需要内置http模块未提供的功能时(例如,处理重定向和记住Cookie),您可以考虑使用request
。除了设置npm install tough-cookie
之外,您还需要jar: true
,如下所示:
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()
实例,无论它们的默认值是什么。但是,您还必须为要使用这些Cookie的每个jar
手动指定request()
。