Как попасть на перенаправленную страницу с помощью Request и NodeJS

Я использую Request, Jsdom и NodeJS для входа на веб-страницу. Согласно API запроса,

followRedirect — следовать ответам HTTP 3xx как перенаправлениям (по умолчанию: true). Это свойство также может быть реализовано как функция, которая получает объект ответа в качестве одного аргумента и должна возвращать true, если перенаправления должны продолжаться, или false в противном случае.

Учитывая, что по умолчанию это значение true, я думаю, что этот запрос даст мне перенаправленную страницу вместо страницы перенаправления посередине.

Мой код:

    request(loginPageURL, function(error, response, body) {
    /*Error handling removed for brevity*/
        jsdom.env({
            html: body,
            scripts: [
                'http://code.jquery.com/jquery-1.7.1.min.js'
            ],
            done: function(err, window) {
                //Set login fields  
                var form = $('#authorizationForm');
                var data = form.serialize();
                var url = form.attr('action') || 'get';
                var type = form.attr('enctype') || 'application/x-www-form-urlencoded';
                var method = form.attr('method');

                request({
                    url: url,
                    method: method.toUpperCase(),
                    body: data,
                    headers: {
                        'Content-type': type
                    }
                }, function(error, response, body) {
                    if (!error) {
                        console.log("Response.statusCode:" + response.statusCode);
                        console.log("Body:" + body);

Вместо того, чтобы дать мне домашнюю страницу после входа в систему, вывод:

Response.statusCode: 302
Body: To access this site, go to <a href="...">

Хотя получение кода с перенаправленной страницы может быть полезным, как мне перейти на страницу, на которую меня перенаправляет?


person BluestTitan    schedule 26.01.2015    source источник


Ответы (1)


Это запрос без GET? Затем вам нужно явно установить followAllRedirects: true.

followAllRedirects — следовать не-GET ответам HTTP 3xx как перенаправлениям (по умолчанию: false)

https://github.com/request/request

(Документы для followRedirect сбивают с толку, потому что они, кажется, не указывают, что followRedirect применяется только к GET.)

person Emmett    schedule 27.01.2015
comment
Спасибо @Эмметт! Из-за настройки аутентификации/файлов cookie мне также нужно было установить значение true для запросов по умолчанию для банок. - person BluestTitan; 27.01.2015