http-无状态的:两次访问之间,无区别,cookie可解决

cookie:在浏览器保存一些数据,每次请求都会带过来;

  弊端:可以查看修改,并不安全、大小有限(4K)

  读取--cookie-parser

  发送--

  

session:保存数据,保存在服务端,更加安全,大小无限

  基于cookie实现,通过cookie读取session值;cookie中会有一个session的ID,服务器利用session_id找到session文件、读取、写入

  隐患:session劫持--cookie加密、定期更换等

  cookie-session

1、发送cookie

  res.secret(签名);

  res.cookie(名字,值,{path:'/',maxAge:毫秒单位的有效期,signed:true}

2、读取cookie

  依赖cookie-parser 中间件  签名

    cookie-encrypter 中间件  加密

  server.use(cookieParser('asgewrwrfsf'));    //签名秘钥  必须和req.secret的一致  
  console.log('未签名的cookie:',req.cookies);   
  console.log('签名的cookie',req.signedCookies);
3、删除cookie
  res.clearCookie(名字)
 
const express = require('express');
const cookieParser = require('cookie-parser'); //读取cookie使用 var server = express();
server.listen(8080); server.use(cookieParser('asgewrwrfsf')); //签名秘钥 必须和下面req.secret的一致,才能解析正确,下面无需重新声明 server.use('/',function(req,res){
//req.secret = 'asgewrwrfsf'; //签名秘钥
res.cookie('user','userName',{ //存cookie,发送cookie
path:'/aaa/a.html', //此目录下才能访问
maxAge:30*24*2600*1000, //有效期 30天
signed:true, //签名 ,依旧可以看见,但是可以防止篡改
}); //读取cookie,需要依赖cookie-parser中间件,分开接收
console.log('未签名的cookie:',req.cookies);
console.log('签名的cookie',req.signedCookies); // res.clearCookie('user',{path:'/aaa/a.html'}); //删除cookie res.send('ok');
})

session读写:

  依赖cookie-session中间件,cookie-parser

  session劫持预防,key必须设置

const express = require('express');
const cookieParser = require('cookie-parser'); //读取cookie使用
const cookieSession = require('cookie-session'); var server = express();
server.listen(8080); server.use(cookieParser());
var arr = [];
for(var i=0;i<100000;i++){
arr.push('sig_'+Math.random());
};
server.use(cookieSession({
name:'se',
keys:arr, //防session劫持
maxAge:24*3600*1000, //有效期
})); server.use('/',function(req,res){
console.log(req.session);
if(req.session['count'] == null){
req.session['count'] = 1;
}else{
req.session['count']++;
}
 
 //删除session
 //delete req.session
res.send('ok2');
})

  

 

nodeJs学习-08 cookie、session的更多相关文章

  1. JavaScript学习08 Cookie对象

    JavaScript学习08 Cookie对象 JavaScript Cookie Cookie对象: Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cooki ...

  2. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  3. 【转】学习总结--Cookie & Session总结

    转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理 1)什么是状态管理?   将浏览器与web服务器之间多次交互过程 ...

  4. Web安全测试学习笔记(Cookie&Session)

    一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...

  5. Django学习手册 - cookie / session

    cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,s ...

  6. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  7. node(4)express 框架 EJS模板,cookie, session的学习

    一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点 ...

  8. Javaweb学习笔记5—Cookie&Session

    今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...

  9. Java web学习 Cookie&&Session

    cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...

随机推荐

  1. 安装配置flask环境

    安装 Flask 好的,让我们开始吧! 现在我们必须开始安装 Flask 以及一些我们会用到的扩展.我首选的方式就是创建一个虚拟环境,这个环境能够安装所有的东西,而你的主 Python 不会受到影响. ...

  2. HDFS读数据的过程

  3. javascript基础:bom

    一.BOM 1.概念:Browser Object Model  浏览器对象模型 *  将浏览器的各个组成部分封装成对象 2.组成: *  Window:窗口对象                  1 ...

  4. TZOJ 2478 How many 0's?(数位DP)

    描述 A Benedict monk No.16 writes down the decimal representations of all natural numbers between and ...

  5. wsgi Python的WEB框架

    Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip install bottle easy_i ...

  6. placeholder IE兼容,显示password

    从网上找了很多关于placeholder IE兼容性的问题,下边的这个js方法可以显示password. <!doctype html> <html lang="en&qu ...

  7. Windows 禁用Windows updata服务

    方法一:禁用Windows updata服务 按WIN+R 打开运行,输入 services.msc 回车 然后找到 “Windows updata”服务,双击后设置为禁用 应用即可; 方法二:推迟自 ...

  8. c++控制内存分配

    为了满足应用程序对内存分配的特殊需求,C++允许重载new运算符和delete运算符控制内存分配,通过定位new表达式初始化对象(好处是可以在某些场景下避免重新内存分配的消耗) 1.operate n ...

  9. Python科学计算生态圈--Pandas

  10. sar磁盘I/O统计数据

    sar是一个研究磁盘I/O的优秀工具.以下是sar磁盘I/O输出的一个示例. 第一行-d显示磁盘I/O信息,5 2选项是间隔和迭代,就像sar数据收集器那样.表3-3列出了字段和说明. 表3-3    ...