express框架中cookie的使用

Posted jianxian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了express框架中cookie的使用相关的知识,希望对你有一定的参考价值。

技术图片

Set-cookie:name=name;expires=date;path=path;domain=domain
支持cookie的浏览器都会对此作出反应,即创建cookie文件并保存(也可能是内存cookie),用户以后在每次发出请求时,浏览器都要判断当前所有的cookie中有没有没失效(根据expires属性判断)并且匹配了path属性的cookie信息,如果有的话,会以下面的形式加入到请求头中发回服务端:

Cookie: name="zj"; Path="/linkage"

服务端的动态脚本会对其进行分析,并做出相应的处理,当然也可以选择直接忽略。

这里牵扯到一个规范(或协议)与实现的问题,简单来讲就是规范规定了做成什么样子,那么实现就必须依据规范来做,这样才能互相兼容,但是各个实现所使用的方式却不受约束,也可以在实现了规范的基础上超出规范,这就称之为扩展了。无论哪种浏览器,只要想提供cookie的功能,那就必须依照相应的RFC规范来实现。所以这里服务器只管发Set-cookie头域,这也是HTTP协议无状态性的一种体现。

需要注意的是,出于安全性的考虑,cookie可以被浏览器禁用。

技术图片

 

 

name: 类型为String 
value: 类型为String和Object,如果是Object会在cookie.serialize()之前自动调用JSON.stringify对其进行处理 
Option: 类型为对象,可使用的属性如下 
domain:cookie在什么域名下有效,类型为String,。默认为网站域名 
expires: cookie过期时间,类型为Date。如果没有设置或者设置为0,那么该cookie只在这个这个session有效,即关闭浏览器后,这个cookie会被浏览器删除。 
httpOnly: 只能被web server访问,类型Boolean,禁止客户端javascript的访问,禁止后不能使用document.cookie。 
maxAge: 实现expires的功能,设置cookie过期的时间,类型为String,指明从现在开始,多少毫秒以后,cookie到期。 
path: cookie在什么路径下有效,默认为’/’,类型为String 
secure:只能被HTTPS使用,类型Boolean,默认为false 
signed:使用签名,类型Boolean,默认为false。express会使用req.secret来完成签名,需要cookie-parser配合使用

设置cookie

var express=require(express);
var cookie=require(cookie-parser); 
var app=express();


app.use(cookie());

app.get(/,function(req,res){

   if(req.cookies.user){
       res.send(欢迎在次登录)
   }
    else{
       res.cookie(user,1,{ expires: new Date(Date.now() + 100), httpOnly: true });
       res.send(欢迎新用户登录)
   }
});

app.listen(8888);

技术图片

 

 技术图片

 

 技术图片

 

以上是关于express框架中cookie的使用的主要内容,如果未能解决你的问题,请参考以下文章

Node.js-express框架-cookie设置参数详解和举例

express 4 使用session和cookies

Express4.10.2开发框架中默认app.js的代码注释

无法从带有 Socket.IO 的 cookie 中获取 Express 会话 ID

Express 是一个方便开发者的 web 框架,可以让开发者可以方便地处理路由,Cookie, 静态文件,上传文件, RESTFULL风格等等常见操作。

无法使用 NodeJS 中的 request 和 express 模块在浏览器中设置 cookie