2014-10-15 4 views
0

nodeJS를 사용하여 응용 프로그램을 개발 중입니다. 응용 프로그램에서 로그인을 한 후에 http 요청을 받아야하지만 302 상태 응답이 있고 리디렉션됩니다. 로그인. http 요청으로 쿠키 세션 정보를 보내야한다고 생각합니다. 어떻게 가능합니까? 당신이 내장 된 HTTP 모듈 (예를 들어, 리디렉션을 처리하고 쿠키를 기억) 제공하지 않습니다 필요로하는 기능을 시작할 때 당신은 request 사용을 고려할 수nodeJS, http.request를 사용하여 세션이 끊어짐

var http = require('http'); 

    var options = { 
     //host: "siadmigo.siadmiservice.com", 
     host: "localhost", 
     path: "/" + model + "/config/", 
     port: '1337', 
     withCredentials: true, 
     method: 'GET' 
    }; 

    var req = http.request(options, function(res) { 

     console.log("Got response: " + res.statusCode); 

     var body = ''; 
     res.on('data', function(chunk) { 
      body += chunk; 
     }); 
     res.on('end', function() { 
      console.log(body); 
      return callback(null, body); 
     }); 

    }).on('error', function(e) { 
     console.log("Got error: " + e.message); 
     return callback(e, null); 
    }); 

    req.end(); 

답변

0

:

여기 내 코드입니다. 당신은 아래와 같이 jar: true 설정에 추가 npm install tough-cookie해야합니다

var request = require('request'); 

// ... 

// _request() will maintain a cookie jar across multiple calls to _request() 
var _request = request.defaults({jar: true}); 
_request('http://localhost:1337/' + model + '/config/' , function(err, res, body) { 
    callback(err, body); 
}); 

설정하거나 기본값으로 별도의 request() 대신 별도의 쿠키 항아리를 사용

var request = require('request'); 

// ... 

var jar = request.jar(); 
request({ 
    url: 'http://localhost:1337/' + model + '/config/', 
    jar: jar 
}, function(err, res, body) { 
    callback(err, body); 
}); 

두 번째 솔루션과의 트레이드 오프는 디폴트 값에 관계없이 jar 오브젝트를 다른 request() 인스턴스로 전달할 수 있습니다. 그런 다음 해당 쿠키를 사용하려는 각 request()에 대해 수동으로 jar을 지정해야합니다.

관련 문제