-1
嗨,大家好(新年快樂btw :))! 我嘗試Node.js和Express.js,並且,我在處理幾個請求時遇到了一些困難。Node.js發佈請求 - 保持會話活躍
這是問題:我需要從外部網站檢索數據。要做到這一點,我必須登錄,我有一個假/殭屍帳戶可用。我想要做的是首先發送POST請求與我的用戶名和密碼,然後發送一個GET請求來訪問特定的內容。問題是,即使POST請求成功執行,當我正在執行GET請求時,我不再登錄。 我在Ruby中使用Gem Mechanize做同樣的事情,但它應該可以做一些隱含的東西,使整個過程的工作。
要提出請求,我正在使用請求模塊(https://github.com/request/request)。而且,這裏是代碼:
var zombie = require('request').defaults({
headers: { connection: "keep-alive" },
pool: {maxSockets: 1},
});
var connect = function(req, res, next){
zombie.post({
url: "target.com",
form: {
user: "zombie",
pass: "password"}
}, function(err, response, body){
req.connected = true;
next();
});
}
var information = function(req, res, next){
if(req.connected){
zombie.get({
url: "target.com",
qs: {
page: "targetPage",
search: req.params.search}
}, function(err, response, body){
res.send(body);
})
}
}
而且,從控制器,我試圖連接,然後訪問信息。
var router = require('express').Router();
var zombie = require('./../middleware/Zombie');
router.get('/search/:search', zombie.connect, zombie.information);
非常感謝。我正在查看我的http頭文件的keep-alive屬性,但這並不重要。 'require('request')。default({jar:true})'就足夠了(使用韌體cookie)來保持會話從一個請求到另一個。 – KtorZ