【问题标题】:node js http post request save cookie节点js http post请求保存cookie
【发布时间】:2014-05-12 20:12:45
【问题描述】:

我正在从节点调用 http post 请求(来自另一个 3rd 方服务器的登录请求),并希望保存 cookie 以供将来的 http 请求使用。

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();

如何从请求的服务器发送的响应中访问和保存 cookie?

【问题讨论】:

  • 我在我的代码中发现了一个问题。如果您通过发布请求发送数据,则添加如下标题:headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': data.length } 其中数据是您在发布请求中发送的内容

标签: node.js cookies express


【解决方案1】:

您应该能够使用response.headers['set-cookie']; 获取标题。

如果您需要实际解析它们,可以使用 cookie(Express 使用的)或 cookiejar 之类的模块。

【讨论】:

  • 其实我试过了,但是报错:Object # has no method 'getHeader'
  • 嗯..你也可以使用response.headers。我已经更新了我的答案。
  • 我尝试在同一个节点服务器中创建一个发布请求,其中在响应标头中我设置了 cookie。它工作正常。但是当我尝试使用 3rd 方服务器时,它是未定义的。我已经签入了chrome dev。工具(在网络中),其中 cookie 在后响应中出现。第 3 方服务器在 php 中。
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多