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 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
JavaScript实现复制文章自动添加版权
Aug 02 Javascript
JS之相等操作符详解
Sep 13 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 Javascript
小程序实现多列选择器
Feb 15 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
用php+mysql一个名片库程序
2006/10/09 PHP
php与paypal整合方法
2010/11/28 PHP
PHP多例模式介绍
2013/06/24 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python中的yield使用方法
2014/02/11 Python
MySQL最常见的操作语句小结
2015/05/07 Python
python多维数组切片方法
2018/04/13 Python
Python OpenCV实现视频分帧
2019/06/01 Python
pytorch 模型可视化的例子
2019/08/17 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
python中的列表和元组区别分析
2020/12/30 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
信息管理专业自荐书
2014/06/05 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python