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 相关文章推荐
jquery中文乱码的多种解决方法
Jun 21 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
Oct 17 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
JavaScript获取当前网页最后修改时间的方法
Apr 03 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
Jun 18 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
node中间层实现文件上传功能
Jun 11 Javascript
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
jQuery实现购物车全功能
Jan 11 jQuery
Vue通过懒加载提升页面响应速度
May 10 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
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
js倒计时小程序
2013/11/05 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
详解AngularJS ng-class样式切换
2017/06/27 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
Python实现的字典值比较功能示例
2018/01/08 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python 实现return返回多个值
2019/11/19 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
大一自我鉴定范文
2013/12/27 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
民主评议党员个人总结
2015/02/13 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
校园开放日新闻稿
2015/07/17 职场文书
工作简报怎么写
2015/07/21 职场文书
学习十八大的感悟
2015/08/11 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python