当前位置: 首页 > 编程笔记 >

node.js cookie-parser之parser.js

林俊英
2023-03-14
本文向大家介绍node.js cookie-parser之parser.js,包括了node.js cookie-parser之parser.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。

以上就是node.js cookie-parser之parser.js的全部内容,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • GNU解析器用于解析传递的gnu参数。 它现已弃用,并由DefaultParser取代。 例子 (Example) CLITester.java import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.GnuPa

  • Posix解析器用于解析Posix,就像传递的参数一样。 它现已弃用,并由DefaultParser取代。 例子 (Example) CLITester.java import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.

  • import "go/parser" Package parser implements a parser for Go source files. Input may be provided in a variety of forms (see the various Parse* functions); the output is an abstract syntax tree (AST) r

  • DOM4J是一个基于Java的开源库,用于解析XML文档。 它是一种高度灵活且内存高效的API。 它是Java优化的,使用像List和Arrays这样的Java集合。 DOM4J适用于DOM,SAX,XPath和XSLT。 它可以解析内存占用非常少的大型XML文档。 环境设置 (Environment Setup) 要使用DOM4J解析器,您应该在应用程序的类路径中使用dom4j-1.6.1.ja

  • XPath是万维网联盟(W3C)的官方推荐。 它定义了一种在XML文件中查找信息的语言。 它用于遍历XML文档的元素和属性。 XPath提供了各种类型的表达式,可用于从XML文档中查询相关信息。 什么是XPath? Structure Definations - XPath定义XML文档的各个部分,如元素,属性,文本,命名空间,处理指令,注释和文档节点。 Path Expressions - XP

  • StAX是一个基于Java的API,用于以与SAX解析器类似的方式解析XML文档。 但这两个API有两个主要区别 - StAX是一个PULL API,而SAX是一个PUSH API。 这意味着在StAX解析器的情况下,客户端应用程序需要要求StAX解析器在需要时从XML获取信息。 但是在SAX解析器的情况下,当SAX解析器通知客户端应用程序信息可用时,需要客户端应用程序来获取信息。 StAX AP

  • JDOM是一个基于Java的开源库,用于解析XML文档。 它通常是Java开发人员友好的API。 它是Java优化的,它使用像List和Arrays这样的Java集合。 JDOM使用DOM和SAX API,并结合了两者中的最佳功能。 它的内存占用率低,几乎与SAX一样快。 环境设置 (Environment Setup) 要使用JDOM解析器,您应该在应用程序的类路径中使用jdom.jar。 下载

  • SAX(Simple API for XML)是一种基于事件的XML文档解析器。 与DOM解析器不同,SAX解析器不会创建解析树。 SAX是XML的流式接口,这意味着使用SAX的应用程序接收有关正在处理的XML文档的事件通知元素和属性,从文档顶部开始按顺序排列,然后关闭ROOT元素。 从上到下读取XML文档,识别构成格式良好的XML文档的标记。 令牌的处理顺序与它们在文档中出现的顺序相同。 向应用