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 Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
捕获关闭窗口的脚本
Jan 10 Javascript
使用时间戳解决ie缓存的问题
Aug 20 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
Feb 17 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
JavaScript基础——使用Canvas绘图
Nov 02 Javascript
Angular中使用MathJax遇到的一些问题
Dec 15 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 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 zip扩展Linux下安装过程分享
2014/05/05 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
asp.net和php的区别点总结
2019/10/10 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python 链接和操作 memcache方法
2017/03/04 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
python函数的作用域及关键字详解
2019/08/20 Python
python3实现高效的端口扫描
2019/08/31 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Django权限控制的使用
2021/01/07 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
2014年六一儿童节演讲稿
2014/05/23 职场文书
上诉状格式
2015/05/23 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android