【问题标题】:trying to enable cookies but getting a cookies not enabled response尝试启用 cookie 但收到未启用 cookie 的响应
【发布时间】:2015-08-27 23:13:41
【问题描述】:

在我的 node.js 服务器中,我正在尝试登录一个页面,我正在使用这样的请求:

var request = require('request');
request = request.defaults({jar: true});

然后我有这个:

request.post({url: loginUrl, formData: formData}, function(err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
  console.log('Upload successful!  Server responded with:', body);
});

在响应中,我可以看到它正确地发布了身份验证详细信息,但它说我无法登录,因为我必须启用 cookie。 'jar' 设置为 'true' 并且我根据请求文档 npm 安装了 'tough-cookie' 但这并没有解决它。任何想法都非常感谢!

【问题讨论】:

  • 想一想当您使用浏览器登录此站点时的事件顺序。当您导航到该站点时,您会获取一个 URL,此时服务器可能正在发送一个 cookie。然后,当您登录时,您将身份验证数据与您在初始请求中获得的 cookie 一起发布 - 这是服务器如何知道您是否启用了 cookie 的方式。您正在做的是跳过 GET,因此在 POST 中没有要发送的 cookie,这就是为什么您会遇到 cookie 未启用问题

标签: javascript node.js cookies request http-post


【解决方案1】:

首先要使用 cookie 发布帖子您必须获取 cookie 来存储它,然后发出请求。
尝试向这些表单所在的页面发出请求,然后发布到 loginUrl。
试试这个:

var request = require('request');
request = request.defaults({jar: true});

var urlWithLoginForm = 'http://some.domain.com/auth';
var loginUrl = urlWithLoginForm+'/attempt';
var formData = {'username': 'user1', 'password': 'blablabla'};

request(urlWithLoginForm, function() { // initialising cookies by doing http get
  // so now we have cookies in jar, now we can make post request
  request.post({url: loginUrl, formData: formData}, function(err, httpResponse, body) {
    if (err) {
      return console.error('upload failed:', err);
    }
    console.log('Upload successful!  Server responded with:', body);
  });
});

【讨论】:

    【解决方案2】:

    您是否在用于访问网站的浏览器中启用了 cookie。这通常是“您需要启用 cookie”的意思

    【讨论】:

    • 啊,我明白了。我阅读问题的方式是他在 node.js 中有一个网页设置,他试图登录。仔细看,我现在看到他正在尝试从 node.js 访问另一个站点
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2023-01-20
    • 2018-05-14
    • 1970-01-01
    • 2016-09-17
    • 2015-06-06
    相关资源
    最近更新 更多