javascript - Node.js Cookie 不起作用

标签 javascript node.js

所以我在我的网站上托管了一个node.js 文件,并且我尝试通过cookie 获取数据。 我正在使用 editmycookie,我可以看到 cookie 已设置。

我有一个函数可以从名称中获取 cookie

function parseCookies(request, finding){
   rc = request.headers.cookie + ';';
   rc && rc.split(';').forEach(function( cookie ) {
      var parts = cookie.split('=');
      if(parts.shift().trim() == finding){
          return decodeURI(parts.join('=')).replace(/-/g, '=');
      }

   });
}

然后我运行这个,知道 cookie 已设置

app.get('/', function(req, res){
   user = parseCookies(req, 'user');
   pass = parseCookies(req, 'pass');
   console.log(user + pass);

它记录为 NaN

抱歉,我还在学习 Node。

如果有帮助的话,我正在使用 Ubuntu 16.04!\

奇怪的是,它对我网站上的某些用户有效,而对某些用户则无效。我没有注意到谁工作和谁不工作的模式。

最佳答案

您不会从 parseCookies 函数返回任何内容,returndecodeURI(parts.join('=')).replace(/-/g, '=') 是通过 foreach 的回调调用的,因此此返回毫无意义

因为 parseCookies 返回 undefined 并且 undefined + undefinedNaN

使用forEach时,需要将匹配结果保存在临时变量result中,并返回该变量。

function parseCookies(request, finding) {
  var result;
  var rc = request.headers.cookie + ';';
  rc && rc.split(';').forEach(function(cookie) {
    var parts = cookie.split('=');
    if (parts.shift().trim() == finding) {
      result = decodeURI(parts.join('=')).replace(/-/g, '=');
    }
  });

  return result;
}

或者使用Array.prototype.find (我没有时间测试该版本,因此可能存在错误):

function parseCookies(request, finding) {
  var rc = request.headers.cookie + ';';

  var cookie = rc.split(';').find(cookie => cookie.split('=').shift().trim() == finding);

  return decodeURI(cookie.split('=').join('=')).replace(/-/g, '=');
}

但是你为什么要自己解析cookie呢?有强大且经过良好测试的中间件可以为您完成此操作。

关于javascript - Node.js Cookie 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45473574/

相关文章:

javascript - 我怎样才能使 Electron 以正确的顺序运行代码?

javascript - Node.js Redis lpush 错误

javascript - 如何在 mongoose.js 查询中进行数学运算

javascript - 如何使用 React Apollo 2.1 的 Mutation 组件在 mount 上运行突变?

javascript - 用于捕获 float 范围 (3.0 – 5.5) 的正则表达式

javascript - 使用 fetch api 读取 .scss 文件

javascript - Twitter 状态更新 API 不起作用

javascript - 尝试使用 onclick 事件提交父表单,但不起作用

javascript - ajax发送请求两次

javascript - 为什么orm函数的返回对象被限制为100个?