2015-09-12 2 views
5

Я пытаюсь изучить node.js, и я работаю над утилитой для входа на сайт, а затем exctract некоторой информации. Я прочитал, что перенаправления должны «работать автоматически» в документации, но я не могу заставить его работать.Следуйте за перенастройкой с запросом node.js

Во-первых, я делаю POST, который дает respone.statusCode == 302. Тело пуст. Я ожидал, что тело будет содержать перенаправленную страницу.

Тогда я нашел «новый» url, в response.headers ['location']. При использовании этого объекта тело просто содержит страницу «не вошедшей в систему», а не страницу, которую я ожидал.

Кто-нибудь знает, как это сделать?

+0

действие = "Войти", что это значит? Каково ваше имя файла? –

+0

Это всего лишь некоторые данные формы, ожидаемые сервером. – kaze

+0

Да. Правильно ли это с расширением? –

ответ

15

Переадресации включены по умолчанию для GET запросы только. Для того, чтобы выполнить переадресацию в вашем POST, добавьте следующие строки в конфигурации:

followAllRedirects: true 

Обновленный код:

request({ 
    url: start_url, 
    method: 'POST', 
    followAllRedirects: true, 
    jar: true, 
    form: { 
     action: 'login', 
     usertype: '2', 
     ssusername: '****', 
     sspassword: '****', 
     button: 'Logga in' 
    } 
}, function(error, response, body) { 
    if (error) { 
     console.log(error); 
    } else { 
     console.log(body, response.statusCode); 
     request(response.headers['location'], function(error, response, html) { 
      console.log(html); 
     }); 
    } 
}); 
+0

Красивая! Работал с первой попытки с followAllRedirects! – kaze

+0

Это, похоже, не работает с 'request-prom' - мой' .then() 'блок не срабатывает. – chovy