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 相关文章推荐
Mootools 1.2教程(2) DOM选择器
Sep 14 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
WebPack基础知识详解
Jan 16 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 Javascript
手把手搭建安装基于windows的Vue.js运行环境
Jun 12 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
vue+swiper实现组件化开发的实例代码
Oct 26 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
微信小程序渲染性能调优小结
Jul 30 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 学习路线与时间表
2010/02/21 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
Python Queue模块详解
2014/11/30 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python探索之创建二叉树
2017/10/25 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python的re正则表达式实例代码
2018/01/24 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
《两个铁球同时着地》教学反思
2014/02/13 职场文书
春节晚会主持词
2014/03/24 职场文书
承诺书格式范文
2014/06/03 职场文书
关于幸福的感言
2015/08/03 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
使用CSS连接数据库的方式
2022/02/28 HTML / CSS