zoukankan      html  css  js  c++  java
  • [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。
  • 相关阅读:
    ZOJ 1002 Fire Net
    Uva 12889 One-Two-Three
    URAL 1881 Long problem statement
    URAL 1880 Psych Up's Eigenvalues
    URAL 1877 Bicycle Codes
    URAL 1876 Centipede's Morning
    URAL 1873. GOV Chronicles
    Uva 839 Not so Mobile
    Uva 679 Dropping Balls
    An ac a day,keep wa away
  • 原文地址:https://www.cnblogs.com/coolicer/p/4191551.html
Copyright © 2011-2022 走看看