2015-01-02 7 views
-1

Привет, ребята (Happy new year btw :))! Я пытаюсь выполнить Node.js и Express.js, и я столкнулся с некоторыми трудностями при обработке нескольких запросов.Node.js Post Request - Keep Session Alive

Вот проблема: мне нужно получить данные с внешнего веб-сайта. Для этого мне нужно войти в систему, и у меня есть поддельная/зомби-учетная запись. Я пытаюсь сначала отправить запрос POST с моим именем пользователя и паролем, а затем отправить запрос GET для доступа к определенному контенту. Проблема в том, что даже если запрос POST успешно выполнен, когда я делаю запрос GET, я больше не в системе. Я делал то же самое с Gem Mechanize в Ruby, но, вероятно, он должен сделать некоторые неявный материал, который заставил весь процесс работать.

Для выполнения запросов, я использую модуль запроса (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); 

ответ

1

Скорее всего, сервер отправляет обратно Set-Cookie и она становится игнорироваться (поведение по умолчанию для request модуля). Чтобы исправить это, вам необходимо установить npm install tough-cookie, а затем настроить jarconfig option. Есть некоторые examples, которые показывают различные сценарии использования куки-файлов.

+0

Большое спасибо. Я смотрел на свойство keep-alive моего http-заголовка, но это было просто неважно. 'require ('request'). Default ({jar: true})' было достаточно (с жестким cookie), чтобы сохранить сеанс от запроса к другому. – KtorZ