我无法访问NodeJS中http post后返回的cookie

时间:2015-10-05 13:33:41

标签: node.js cookies node-request

我有一个简单的NodeJS应用程序,它使用远程Java CMS进行身份验证。成功验证后,CMS将返回cookie。

但是,对于我的生活,我无法想象如何访问/获取此cookie值。 (我需要cookie才能通过身份验证向CMS的API发出请求。)

我在curl命令中返回cookie,但无法在NodeJS中访问它。 卷曲命令:

curl -v -k --data "username=admin&password=password111&realm=cms101"     
    https://test.abeo.ie/gatekeeper/rs/authenticate/login

现在这是我的NodeJS应用程序代码:

    //disable self-signed ssl cert rejection
    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

    var http = require('http');
    var request = require('request');
    var Cookies = require('cookies');

    //enable cookies
    request.defaults({jar: true});


    request({
        url: 'https://test.abeo.ie/gatekeeper/rs/authenticate/login', //URL to hit
        qs: {username: 'admin', password: 'password111', realm: 'cms101'}, //Query string data
        method: 'POST', //Specify the method
        headers: { //We can define headers too
            'Content-Type': 'application/x-www-form-urlencoded'
        }


    },

    function(error, response, body){
        if(error) {
            console.log(error);
        } else {

             //response.cookie comes out as 'undefined'
            console.log(response.statusCode, body, response.cookie);

        }
    })

所以我的问题是:我如何从响应中读取cookie值,因为response.cookie值打印为未定义。

谢谢,

迈克

**如果这个问题看起来很模糊......只要这样说,我就会清理它。

1 个答案:

答案 0 :(得分:1)

我想我刚刚回答了我的问题:)

我的语法错误,而不是

 console.log(response.statusCode, body, response.cookie);

我需要

console.log(response.statusCode, body, response.headers['set-cookie']);

现在正在解析这个问题:)