口试和工作中有时刻遇到cookie和session的同异,如今小结以下:
首先看cookie
cookie增编削查:http://www.w3school.com.cn/js…
1.cookie发生
辨认用户:用来客户端和服务器端举行会话
- HTTP是无状况协定,这就回涌现这类征象:当你登录一个页面,然后转到登录网站的另一个页面,服务器没法认识到。或者说两次的接见,服务器不能认识到是同一个客户端的接见,这就让你反复登录,所以发生了cookie。
- cookie:第一次接见一个服务器,不照顾cookie,这时刻服务器在相应(response)下行HTTP报文中,敕令浏览器照顾cookie信息;浏览器再接见同一个域的时刻,将把cookie信息照顾到要求(request)上行HTTP要求中,从而完成了HTTP模仿有了状况。
- 每一个特定域名下面的cookie数目是有限定的,fixfox是50个,Opera是30个,chrome和safari是没有限定的
2.cookie特性
- cookie是不加密的
- cookie是可以被改动和进击
- cookie大小受到限定
3.node运用
//运用cookie必须要运用cookie-parser中间件
var cookieParser = require('cookie-parser');
app.use(cookieParser());
express中的cookie: res担任设置cookie, req担任辨认cookie。
cookie用来制造纪录用户的一些信息,如购置汗青、猜你喜好、接见量等
如今看session
4.session发生
因为cookie明文等一些不足所以发生了session
session依靠cookie,就是应用cookie,完成的“会话”,因而当cookie被禁用,session也没法运用。
session比cookie不一样在那里呢? session会下发一个秘钥(cookie)(乱码),客户端每次接见都照顾这个秘钥,那末服务器假如发明这个秘钥符合,就可以显现这个用户曾保留的信息。
任何语言中,session的运用,是“机理通明”的,也就是让你觉得不到这事儿和cookie有关
5.session特性和运用
session是加密的
var session = reqiure("express-session");
app.use(session({
..一些设置
}));
app.get("/",function(req,res){
console.log(req.sission.login);
});
app.get("/login",function(req,res){
req.session.login = "1";
});
都是req对象
Session存在于服务器的内存中,假如服务器重启就会丧失session同时须要从新登录
6.cookie和session差别
- cookie数据寄存在客户的浏览器上;session数据放在服务器缓存中。
- cookie是明文,不安全,他人应用cookie可以被改动和进击;而session寄存服务器缓存中而且加密的,其他用户看不到。
- session会在肯定时间内保留在服务器上。当用户接见增加,会比较占用你服务器内存,考虑到减轻服务器机能方面,运用cookie。
4.单个cookie保留的数据不能凌驾4K,假如cookie的内容凌驾4K的话,那末挪用的时刻就会返回一个空的字符串;session的密钥(cookie),可以对应无限大的数据