2017-02-22 32 views
0

Я пытаюсь перенаправить на другой URL-адрес сразу после завершения моего первого запроса URL-адреса. Причина этого в том, что для того, чтобы открыть 2-й URL-адрес, для него требуется 1-й URL-адрес cookie-сессии. Это означает, что 2-й URL-адрес может открыться только в том случае, если я открою первый URL-адрес до этого действия.URL-адрес перенаправления в запросе узла

var request = require('request'); 
var j = request.jar(); 

request({ 
    url: first_url, 
    jar: j, 
    json: true 
}, function (error, response, body) { 
    if (!error && response.statusCode === 200) { 
     var cookies = j.getCookieString(first_url); 
     console.log("1st url cookie: "+ cookies); 
     request(second_url, function(body) { 
      var cookies2 = j.getCookieString(second_url); 
      console.log("2st url cookie: "+ cookies2); 
      console.log(body); 
     }) 

Я изменил свой код, как показано выше, для передачи файлов cookie сессии. Однако мой второй URL еще не открывается. Мой вывод на консоли показывает, что оба URL имеют одинаковый идентификатор сеанса, поэтому я предполагаю, что cookie сеанса передается правильно.

первый URL печенья: JSESSIONID = DD4ACC4D65F024BD06D53A648A5B4DE3

2ст URL печенья: JSESSIONID = DD4ACC4D65F024BD06D53A648A5B4DE3

{[Error: чтение ECONNRESET] Код: 'ECONNRESET', ERRNO: 'ECONNRESET', системный вызов: 'читать' }

То, как я проверил cookie сессии, требуется, чтобы мой проект сначала открыл первый URL-адрес в браузере, затем скопируйте и вставьте ссылку 2-го URL-адреса, чтобы открыть вторую ссылку. Без запуска 1-го URL-адреса 2-я ссылка не откроется и, в конце концов, не задержит запрос.

Прошу совета снова и, возможно, я не смотрю в правильном направлении.

+0

Возможный дубликат [Как сохранить сеанс запроса в NodeJS] (http://stackoverflow.com/questions/19936705/how-to-maintain-a-request-session-in-nodejs) –

ответ

0

response.redirect() - неправильный выбор здесь. Во-первых, это не используется в этом контексте. Он используется, когда кто-то делает вам веб-запрос, и вы хотите сообщить им, чтобы он запросил другую страницу. Если это так, вы отправляете 30-кратный статус назад и новое местоположение, а другое - затем, затем перенаправляете и запрашиваете новую страницу. Это противоположность тому, что вы делаете.

Что вам нужно сделать, это сделать запрос на первый URL-адрес, установить сеанс, захватить файлы cookie из этого запроса. Затем, используя те же файлы cookie, сделайте запрос ко второму URL. При прикреплении файлов cookie второй запрос должен рассматриваться как зарегистрированный.

Концепция отслеживания файлов cookie на вашем сервере при обращении к другому сайту часто называется куки-файл cookie, и для интеграции есть много модулей NPM с модулем request(), чтобы сохранить файлы cookie для входа. Фактически, модуль запроса действительно имеет встроенные возможности куки-файлов cookie. Cookie Jar примеры here.

+0

Привет, спасибо так много для вашего четкого объяснения и внушения. Пожалуйста, обратитесь к моему модифицированному коду и прокомментируйте исходное поле темы и надейтесь, что вы можете дать какое-то предложение. Большое спасибо. – RogerMW

+0

@ user4010075 - Ваш второй запрос должен использовать ту же самую кукурузу, как и первый запрос. В этом весь смысл - иметь единый кувшин cookie, который используют оба запроса. – jfriend00

+0

Вы правы! Создание второго запроса с использованием того же кука-банка cookie решило мою проблему. Большое вам спасибо за вашу помощь. – RogerMW