一、Session:
在Web开发中,session代表浏览器与服务器的一次会话过程,这个过程是连续的,也可以时断时续的;通常指从进入系统到退出系统之间所经历的时间。
由于Web的所使用的HTTP协议是无状态的,每一次请求之间都是彼此独立的。有的时候,我们需要在两个彼此独立的请求之间共享一些状态
二、Cookie:
cookie是浏览器存储在用户电脑上的一些数据(以文本文件的方式);每次发起请求时,浏览器都会将对应的cookie数据一起发送至服务器。
HTTP协议是无状态的,cookie就是用来保存服务器和客户端的交互状态
cookie生命周期:
未指定过期时间的cookie;当服务器创建一个cookie的时候没有指定对应的过期时间时,客户端会将这类cookie写入浏览器开辟的一块内存中,当关闭浏览器以后,这块内存也就被释放了,对应的cookie也就是结束了它的生命;
指定过期时间的cookie;当服务器创建一个cookie的时候指定了对应的过期时间时,当到达了过期时间时,对应的cookie就会被删除;
当浏览器中的cookie数量达到了限制时,那么浏览器就会按照某种策略删除一些旧的cookie,腾出空间来创建新的cookie;
当然了,我们也可以手动的人为删除cookie。
浏览器不会让cookie肆意的发展,它总会在需要的时刻出马,干掉一些cookie,结束它们的生命
各大浏览器都对cookie的总个数和总大小都有限制:
Session与cookie的区别:
cookie机制采用的是在客户端保持状态的方案;而Session机制采用的是在服务器端保持状态的方案。Cookie的作用主要是为了解决HTTP协议无状态的问题,而Session机制则是一种在客户端与服务器之间保持状态的解决方案。
Cookie使用起来很方便,使用cookie也能完成session的工作;但是使用cookie有一个很大的弊端,cookie中的所有数据在客户端可以被修改,数据非常容易被伪造,那么一些重要的数据就不能存放在cookie中了,而且如果cookie中数据字段太多会影响传输效率。为了解决这些问题,我们就需要使用session了,session中的数据是保留在服务器端的,相对来说更安全,同时也没有客户端到服务器端这个传输的问题。
三、Token
客户端请求服务器完成登录后,服务器会返回一个token,
token :用户名 + 密码+登录日期等一系列数据经过计算形成的加密串
下次客户端向服务器发起请求,在请求头中带上token,服务端收到token会反解出用户信息,然后判断登录是否过期。
cookie验证和token验证的区别:
token: njnex服务器负载均衡 它能通过redis做token验证,redis是一种NoSQL技术,这是一种基于内存的数据库。能做快速校验。
cookie:njnex不能做校验,需要均衡到服务器上读写数据库处理。
这里容易被恶意攻击。
因此token比cookie更高效更安全。