node.js cookie-parser之parser.js


Posted in Javascript onJune 06, 2016

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。

以上就是node.js cookie-parser之parser.js的全部内容,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
js使用循环清空某个div中的input标签值
Sep 29 Javascript
node.js中的dns.getServers方法使用说明
Dec 08 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
May 25 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
Angular实现的简单查询天气预报功能示例
Dec 27 Javascript
vue 实现input表单元素的disabled示例
Oct 28 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 #Javascript
node.js cookie-parser 中间件介绍
Jun 06 #Javascript
JavaScript 对象字面量讲解
Jun 06 #Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 #Javascript
js获取新浪天气接口的实现代码
Jun 06 #Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 #Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
Jun 06 #Javascript
You might like
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python实现zabbix发送短信脚本
2018/09/17 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
新年爱情寄语
2014/04/08 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
优秀团队申报材料
2014/12/26 职场文书
淘宝好评语句大全
2014/12/31 职场文书
民事上诉状范文
2015/05/22 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
python中的装饰器该如何使用
2021/06/18 Python