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。

[cookie篇]cookie-parser之parser.js的更多相关文章

  1. js基础篇——cookie使用要点

    1.Cookie数量和长度的限制.各个浏览器的限制不同IE7+和Firefox最大限制为50条,chrome和Safari无限制,IE6-最大限制20条.且所有浏览器限制每个cookie长度不能超过4 ...

  2. [cookie篇]从cookie-parser中间件说起

    当我们在写web的时候,难免会要使用到cookie,由于node.js有了express这个web框架,我们就可以方便地去建站.在使用express时,经常会使用到cookie-parser这个插件. ...

  3. javaweb之Cookie篇

    Cookie是在浏览器访问某个Web资源时,由Web服务器在Http响应消息头中通过Set-Cookie字段发送给浏览器的一组数据. 一个Cookie只能表示一个信息对,这个信息对有一个信息名(Nam ...

  4. [转] Web前端优化之 Cookie篇

    原文链接: http://lunax.info/archives/3095.html Web 前端优化最佳实践第三部分面向 Cookie .目前只有 2 条实践规则. 1. 缩小 Cookie (Re ...

  5. cookie记住密码/base64加密(js控制)

    cookie记住密码/base64加密(js控制) • 配置cookie //设置cookie function setCookie ( name, value, expdays ) { var ex ...

  6. cookie的初识和运用(js和jq)

    cookie是什么 cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是JavaScript本身 ...

  7. Java网站开发的一些问题以及解决(cookie消失,上传头像,js等)

    1.首先是cookie的问题,很多人都是遇到了将数据存储到cookie中并且add到response之中,但是还有返回其他页面或者刷新页面cookie消失的情况,除了设置cookie的存活时间外, 还 ...

  8. 常用的本地存储-----cookie篇

    1.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那么久不得不谈本地存储了. 本地存储的好处: 一是避免取回数据前页面一片空白,如果不需要最新数据也可以减少向服务器 ...

  9. js读取cookie 根据cookie名称获取值的方法

    //方法1 //存在问题:如果cookie中存在 aaaname=aa;name=bb 获取name的值就会出现错误function getCookie(c_name){ if (document.c ...

  10. python 终极篇 cookie与session

    ()cookie与session---------->>>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. 软件工程课程设计——第一个Spring

    开发会议框架表格: 1.我们团队Reborn针对需求功能进行热烈的讨论会议,从功能的方面分析开发,结合在一起组合为App软件,再另外思考附加的功能性娱乐项目. 2.开发过程中,以表格的形式反思开发过程 ...

  2. “一片空白”的c#

    using System; using System.Collections.Generic; using System.Text; namespace FindTheNumber           ...

  3. PAT 甲级 1079 Total Sales of Supply Chain

    https://pintia.cn/problem-sets/994805342720868352/problems/994805388447170560 A supply chain is a ne ...

  4. Linux_Centos7_设置MySql定时备份

    一.查看是否安装了必要的组件 [root@localhost /]# rpm -qa | grep cron cronie-1.4.11-14.el7_2.1.x86_64 cronie-anacro ...

  5. 题解 P2580 【于是他错误的点名开始了】

    这个题的题解区就没一简单一点的指针题解?(大概是瞎了) So,这篇题解是给那些想用指针而害怕的同学食用的qwq 记得有一篇题解有个dalao作者放了几个静态模拟的trie树结果最后放了个动态的跑路了. ...

  6. Triangle Counting UVA - 11401(递推)

    大白书讲的很好.. #include <iostream> #include <cstring> using namespace std; typedef long long ...

  7. hihoCoder 1632 Secret Poems(ACM-ICPC北京赛区2017网络同步赛)

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The Yongzheng Emperor (13 December 1678 – 8 October 1735), was ...

  8. MT【188】一个正切余切有关的恒等式

    (2017北大特优)求$9\tan 10^\circ+2\tan 20^\circ+4\tan 40^\circ-\tan 80^\circ=$_____ A.$0$ B.$\dfrac{\sqrt ...

  9. MT【182】系数奇怪的二次函数

    设函数$f(x)=3ax^2-2(a+b)x+b,$其中$a>0,b\in R$证明:当$0\le x\le 1$时,$|f(x)|\le \max\{f(0),f(1)\}$ 分析:由$a&g ...

  10. 【题解】 POJ 1201 Intervals(差分约束)

    懒得复制,戳我戳我 Solution: 这道题就是一个板子题 抽象成第\(a\)至第\(b\)间选择数的个数为\(c\),我们就可以用前缀和来表示,这样就可以得到不等式\(s[b]-s[a-1]> ...