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. --1.plsql中学习job

    --1.plsql中学习job --学习job --建表 create table test_job(para_date date); commit; insert into test_job val ...

  2. tortoisegit如何删除远程分支

    图片来自:https://zhidao.baidu.com/question/134542616148384045.html

  3. Windows Apache httpd-vhosts.conf

    <VirtualHost *:> DocumentRoot "D:\wamp\www" ServerName localhost </VirtualHost> ...

  4. 读书笔记--Head First 面向对象分析与设计 目录

    1.良好应用程序的基石 2.收集需求 3.需求变更 4.分析 5.良好的设计=灵活的软件 6.解决大问题 7.架构 8.设计原则 9.迭代与测试 10.OOA&D 的生命周期 附录1 附录2

  5. WPF绘图性能问题

    代码: /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWind ...

  6. MySQL语句错误及解决方案

    1.group by查询错误 ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contai ...

  7. 统计py文件或目录代码行数

    bug:当遇到3个"""时 可能会将下面的代码不计入代码总行数 import os def count_path(path,countcode): if os.path. ...

  8. Liferay 7.1发布啦

    下载地址: https://cdn.lfrs.sl/releases.liferay.com/portal/7.1.0-m1/liferay-ce-portal-tomcat-7.1-m1-20180 ...

  9. [C#] 利用方向鍵移動 TextBox Focus

    論壇問題 版面上有 100 個 textbox,編號為 1-100,textbox 排列為 1 欄 20 個,共 5 欄,當一開打這個 form 會將在第一欄第一列第一個 textbox 的背景顏色變 ...

  10. ML面试1000题系列(71-80)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 71.看你是搞视觉的,熟悉哪些CV框架,顺带聊聊 ...