nodeJs学习-08 cookie、session
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 中间件 加密
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的更多相关文章
- JavaScript学习08 Cookie对象
JavaScript学习08 Cookie对象 JavaScript Cookie Cookie对象: Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cooki ...
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- 【转】学习总结--Cookie & Session总结
转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理 1)什么是状态管理? 将浏览器与web服务器之间多次交互过程 ...
- Web安全测试学习笔记(Cookie&Session)
一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...
- Django学习手册 - cookie / session
cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,s ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- node(4)express 框架 EJS模板,cookie, session的学习
一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点 ...
- Javaweb学习笔记5—Cookie&Session
今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...
- Java web学习 Cookie&&Session
cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...
随机推荐
- Cocos2dx 3.0 过渡篇(二十八)C++11强类型枚举
一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好 ...
- ImportError: No module named 'pycocotools'
错误原因很简单,就是缺少了pycocotools这个包,首先你需要pip install pycocotools,看少了什么包没安装,我这里少了Cython 于是我又安装了Cython,然后再安装py ...
- Redis学习03——存储字符串(String)
--------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...
- Leetcode441Arranging Coins排列硬币
你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币. 给定一个数字 n,找出可形成完整阶梯行的总行数. n 是一个非负整数,并且在32位有符号整型的范围内. 示例 ...
- 『Power AI by AI』 PAI-AutoML2.0重磅发布
PAI-AutoML调参服务是通过算法的方式解放用户调节算法参数的工作.自2018年8月发布PAI-AutoML1.0版本以来,该功能已经帮助众多PAI的中小企业用户提升了模型的准确性,得到了不错的反 ...
- 1858: [Scoi2010]序列操作
1858: [Scoi2010]序列操作 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 3397 Solved: 1624 [Submit][Statu ...
- HTML 语法简要总结
HTML基本语法 认识网页 网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频以及Flash等. 常见浏览器内核介绍 浏览器是网页运行的平台,常用的浏览器有IE.火 ...
- 详谈Windows消息循环机制
一直对windows消息循环不太清楚,今天做个详细的总结,有说错的地方,请务必指出. 用VS2017新建一个win32 Application的默认代码如下: 程序入口 ...
- proteus 8.8 直装版提示Symbol $MKRORIGIN used but not found in libraries 安装后没有库
用管理员运行程序,然后再通过菜单打开仿真文件是没问题. 解决方法:通常的安装目录是C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Prof ...
- Python网络爬虫与信息提取[request库的应用](单元一)
---恢复内容开始--- 注:学习中国大学mooc 嵩天课程 的学习笔记 request的七个主要方法 request.request() 构造一个请求用以支撑其他基本方法 request.get(u ...