node.js cookie 与 request.jar

标签 node.js authentication cookies jar request

我正在抓取一个需要身份验证的网站。我正在使用 node.js 并使用 jar 来请求来存储 cookie。

我的问题: 我有两个路由/login 和/api,当我登录网站时,我将 cookie 存储在登录路由/文件中,然后我如何在/api 中使用相同的 cookie?

        login.js:

        var request = require('request');
        var jar = request.jar();

        var payload = querystring.stringify({
            username: username,
            password: password,
            request_token: token,
        });

        var options = {
            ..
            ..
            method: 'POST',
            body: payload,
            jar: jar <---------- Valid cookie
        };

       request(options, function (error, response, body) {
            // Code here
        });


       --------------------------------

        api.js:

        var request = require('request');
        var jar = request.jar();

           var options = {
            method: "get",
            url: baseUrl,
            jar: jar <-------- Not sat anymore
        };


        request(options, function (error, response, body) {

            if (error) {
                res.send(error);
                return;
            }

最佳答案

您可以创建一个新模块并集中该方法。在这里,我创建了模块 jar.js,它具有允许设置/获取 jar 的导出函数。

您的原始代码现在只需要考虑这种新方式。在每个文件中,我添加了行 var jar = require('./jar');

jar.js:

var request = require('request');
var jar;

module.exports = function getJar() {
   if(jar)
     return jar;
   else {
     jar = request.jar();
     return jar;
  }
}

module.exports = function setJar(jarParam) {
  jar = jarParam;
}

 --------------------------------
  login.js:

    var jar = require('./jar');
    var request = require('request');
    jar.setJar(request.jar());

    var payload = querystring.stringify({
        username: username,
        password: password,
        request_token: token,
    });

    var options = {
        ..
        ..
        method: 'POST',
        body: payload,
        jar: jar.getJar() <---------- Valid cookie, from jar module
    };

   request(options, function (error, response, body) {
        // Code here
    });


  --------------------------------

    api.js:

    var request = require('request');
    var jar = require('./jar');

       var options = {
        method: "get",
        url: baseUrl,
        jar: jar.getJar() <---------- Valid cookie, from jar module
    };

关于node.js cookie 与 request.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506393/

相关文章:

node.js - 使用 ECDH 和 nodejs 加密解密 secret

authentication - Angularfire2 自定义身份验证

android - 保存 Cookies Webview?

cookies - Coldfusion cfscript cookie 不允许空白过期

javascript - 为什么我得到 "Invalid assignment on left-hand side"?

node.js - typescript : Add a method on a class from another module/Populate a namespace from different modules

node.js - 我可以用作 webpack 配置的 es-modules 吗?

javascript - 使用 Node.js 进行回调和返回

安装 FB 应用程序后,Android Facebook 示例应用程序无法登录

php - session /身份验证如何与 nginx/NHPM/PHP-FPM 一起工作?