• [cookie篇]cookie-parser之parser.js


    cookie-parser的作用,官方的说法是:Parse Cookie header and populate req.cookies with an object keyed by the cookie names.我的理解是,转换headers中的cookie并跟req.cookies合并。作为cookie-parser的核心,parser提示了2个函数:signedCookies和JSONCookies,以及它们的帮助函数。
     
    此文到这里也就结束了这个插件,让我们来回顾一下,同时也打开了下一篇关于session的学习。
     
    cookie-parser从客户端取cookie,然后经过express-session(以express为本)的处理。在客户端表示为一个签名后的字符串,在服务端,由于使用了unsign方法,所以能看到解签过的字符。这样一来,所有的迷底都解开了。我们来看看session那段处理cookie的代码吧。
     
    function setcookie(res, name, val, secret, options) {
      var signed = 's:' + signature.sign(val, secret);
      // ....省略
     
      res.setHeader('set-cookie', header)
    }
    此处利用set-cookie写入cookie。当客户端发送cookie,此时就用到了parser.js的signedCookies。
     
    exports.signedCookies = function(obj, secret){
      var cookies = Object.keys(obj); 
      var dec; 
      var key;
      var ret = Object.create(null);
      var val;
     
      for (var i = 0; i < cookies.length; i++) {
        key = cookies[i]; 
        val = obj[key];   
        dec = exports.signedCookie(val, secret); 
      
        if (val !== dec) { 
          ret[key] = dec;
          delete obj[key];
        }
      }
     
      return ret;
    };
     
    exports.signedCookie = function(str, secret){ 
      return str.substr(0, 2) === 's:'
        ? signature.unsign(str.slice(2), secret)
        : str;
    };
    在帮助函数signedCookie中,当发现含有s:开始则是签名过的cookie,这时就用了signature.unsign解签。下次,让我们来研究一下session。
  • 相关阅读:
    Mysql的select加锁分析
    浅析Kubernetes的工作原理
    HTTP/2部署使用
    Amazon新一代云端关系数据库Aurora
    为什么 kubernetes 天然适合微服务
    深入解读Service Mesh背后的技术细节
    微服务的接入层设计与动静资源隔离
    Prim算法和Kruskal算法介绍
    DAG及拓扑排序
    BFS和DFS
  • 原文地址:https://www.cnblogs.com/coolicer/p/4191551.html
Copyright © 2020-2023  润新知