node.js cookie-parser之parser.js_node.js

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。

时间: 2024-10-09 20:30:45

node.js cookie-parser之parser.js_node.js的相关文章

Node.js 服务器端应用开发框架 -- Hapi.js_node.js

Hapi.js 是一个用来构建基于 Node.js 的应用和服务的富框架,使得开发者把重点放在便携可重用的应用逻辑而不是构建架构.内建输入验证.缓存.认证和其他 Web 应用开发常用的功能. 示例代码: var Hapi = require('hapi'); // Create a server with a host and port var server = new Hapi.Server('localhost', 8000); // Add the route server.route({

初识Node.js_node.js

先来简单介绍nodeJS 我们知道JavaScript是运行在浏览器中的,浏览器为它提供了一个上下文(context),从而让JavaScript得以解析执行. nodeJS其实可以这么理解,它是另外一种上下文,它允许在后端(脱离浏览器环境)解析执行JavaScript代码. 因为它使用了Google的V8虚拟机(Google的Chrome浏览器使用的上下文环境),所以代码可以同理德被执行. nodeJS除了可以在浏览器端显示结果之外,还可以直接在控制台输出. nodeJS的特点 nodeJS主

基于Node.js的自动化构建工具Grunt.js

Java世界里的Maven提供了强大的包依赖管理和构建生命周期管理.在JavaScript的世界 里,随着Node.js的流行,JavaScript原生的构建工具已经成为可能. Grunt.js是基 于Node.js的自动化任务运行器.Grunt.js结合NPM的包依赖管理,完全可以媲美Maven. Grunt.js天然适合前端应用程序的构建--不仅限于JavaScript项目,同样可以用于其他语 言的应用程序构建.越来越多的JavaScript项目已经在使用Grunt,其中最大的使用者包括著

关于cookie的初识和运用(js和jq)_基础知识

cookie是什么 --------------------------------------------------- cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是JavaScript本身的性质.cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用.因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使

通过node-mysql搭建Windows+Node.js+MySQL环境的教程_node.js

前言 MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs有13库可以访问MySQL,felixge/node-mysql似乎是最受关注项目,我也决定尝试用一下. 要注意名字,"felixge/node-mysql"非"node-mysql",安装部分会介绍这个小插曲! 目录 node-mysql介绍 建立MySQL测试库 node-mysql安装 node-mysql使用 1. node-mysql介绍 felixg

使用node.js 制作网站前台后台_node.js

node.js  能做什么?我至今也不清楚,他在哪方面应用比较广泛,我没有机会接触到那样的项目.只是因为喜欢,业余时间做了一个网站和后台.深刻领悟到一个道理那就是如果你喜欢一项技术可以玩玩,但是如果用到项目中就必须花些时间去解决很多问题. 使用到的技术: express + jade sqlite + sequelize   redis 1. 关于jade     支持include.  比如: include ./includes/header  header 是一个局部视图,类似asp.ne

js cookie教程,用户下次登陆实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.111cn.net/1999/xhtml" > <head> <title>js COOKIE 记住帐号或密码

js cookie详细说明与实例

<? //cookie.php教程 if(!isset($flag)) { setcookie("mycookie","this my cookie!"); header("location:cookie.php?flag=1"); exit; } ?> <html> <body> <? echo "cookie中有:".$mycookie; ?> </body> &

js入门教程:js cookie 的时间设置与删除cookie

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> www.111cn.net js cookie教程</title> <meta name="Generator" content="EditPlus"> <meta name="Author&

js cookie删除,增加,修改

js cookie删除,增加,修改 function getcookie(n) {      var dc = "; "+document.cookie+"; ";      var coo = dc.indexOf("; "+n+"=");      if (coo!=-1){       var s = dc.substring(coo+n.length+3,dc.length);       return unescap