Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js Cookies不工作_Javascript_Node.js - Fatal编程技术网

Javascript Node.js Cookies不工作

Javascript Node.js Cookies不工作,javascript,node.js,Javascript,Node.js,所以我在我的网站上托管了一个node.js文件,我试图通过cookies获取数据。 我正在使用editmycookie,我可以看到cookies已经设置好了 我有一个函数,可以从一个名字中获取cookies function parseCookies(request, finding){ rc = request.headers.cookie + ';'; rc && rc.split(';').forEach(function( cookie ) { v

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

我有一个函数,可以从一个名字中获取cookies

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, '=');
      }

   });
}
然后我运行这个,知道cookies已经设置好了

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

对不起,我还在学习

如果有帮助的话,我在Ubuntu 16.04上\


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

使用此代码设置cookies,让我们看看它是如何工作的

    var http = require('http');
    function parseCookies (request) {
    var list = {},
    rc = request.headers.cookie;
    rc && rc.split(';').forEach(function( cookie ) {
    var parts = cookie.split('=');
    list[parts.shift().trim()] = decodeURI(parts.join('='));
    });
    return list;
   }
   http.createServer(function (request, response) {

  // To Read a Cookie
  var cookies = parseCookies(request);

  // To Write a Cookie
  response.writeHead(200, {
    'Set-Cookie': 'mycookie=test',
    'Content-Type': 'text/plain'
  });
  response.end('Hello World\n');
  }).listen(8124);

  console.log('Server running at http://127.0.0.1:8124/');

并添加您要呼叫的路线。希望此hepls为您服务。

使用此代码设置cookies,让我们看看它是如何工作的

    var http = require('http');
    function parseCookies (request) {
    var list = {},
    rc = request.headers.cookie;
    rc && rc.split(';').forEach(function( cookie ) {
    var parts = cookie.split('=');
    list[parts.shift().trim()] = decodeURI(parts.join('='));
    });
    return list;
   }
   http.createServer(function (request, response) {

  // To Read a Cookie
  var cookies = parseCookies(request);

  // To Write a Cookie
  response.writeHead(200, {
    'Set-Cookie': 'mycookie=test',
    'Content-Type': 'text/plain'
  });
  response.end('Hello World\n');
  }).listen(8124);

  console.log('Server running at http://127.0.0.1:8124/');

并添加您要调用的路由。希望此hepls为您所用。

您没有从
parseCookies
函数返回任何内容,
返回decodeURI(parts.join('='))。replace(/-/g,'=')
是通过foreach的回调调用的,因此此返回没有意义

因为对于该
parseCookies
返回
undefined
undefined+undefined
NaN

使用
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;
}
或者使用(我没有时间测试该版本,所以可能有bug):


但你为什么要自己解析这些饼干呢。有一些健壮且经过良好测试的中间件可以为您实现这一点。

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

因为对于该
parseCookies
返回
undefined
undefined+undefined
NaN

使用
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;
}
或者使用(我没有时间测试该版本,所以可能有bug):

但你为什么要自己解析这些饼干呢。有强大且经过良好测试的中间件可以为您做到这一点