2014-05-12 2 views
2

노드에서 http 게시 요청 (다른 타사 서버의 로그인 요청)을 호출하고 이후의 http 요청을 위해 쿠키를 저장하려고합니다.node js http POST 저장 요청 쿠키 저장

var options = { 
    host: 'hostname.com', 
    port: '80', 
    path: '/login.php', 
    method: 'POST' 
}; 

var data = qs.stringify({ 
    uname: "validUsername", 
    password: "validPassword" 
}); 

var req = http.request(options, function(response) { 
    console.log(response.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(response.headers)); 

    // console.log('Cookies: ' + response.getHeader("Set-Cookie")); 
    response.setEncoding('utf8'); 

    response.on('data', function (chunk) { 
     console.log('BODY: ' + chunk); 
    }); 
}); 

req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 

req.write(data); 
req.end(); 

어떻게 요청 된 서버가 보낸 응답에서 쿠키에 액세스하고 저장할 수 있습니까?

+1

내 코드에 하나의 문제점이 있습니다. 게시물 요청과 함께 데이터를 보내는 경우 헤더 : { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': data.length } ' – Vishal

답변

3

response.headers['set-cookie'];으로 헤더를 가져올 수 있어야합니다.

실제로 구문 분석해야하는 경우 cookie (Express가 사용하는 것) 또는 cookiejar과 같은 모듈을 사용할 수 있습니다.

+0

게시물 데이터를 보내려는 데이터가 실제로 있습니까? 실제로 시도했지만 오류가 발생했습니다. 개체 # 에'getHeader '메서드가 없습니다. – Vishal

+0

허 .. 잘'response.headers '도 사용할 수 있습니다. . 내 대답을 업데이트했습니다. – mscdex

+0

응답 헤더에서 쿠키를 설정 한 동일한 노드 서버에서 게시 요청을 작성했습니다. 그것은 잘 작동합니다. 하지만 타사 서버를 사용하려고하면 정의되지 않은 상태가됩니다. 크롬 개발자를 확인했습니다. 쿠키가 사후 응답으로 오는 도구 (네트워크에서) 제 3 자 서버는 PHP에 있습니다. – Vishal