Cookie
cookie是一个非常具体的东西,指的是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
Cookie由服务器生成,发送给浏览器,浏览器把cookie以K-V形式保存到某个目录下的文本文件内,下一次请求同一网站时会把cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个于的cookie数量都是有限的。
Seesion
session从字面上讲,就是会话。类似于和一个人交谈,你要确定身份。服务器要知道当前发送请求给自己的是谁,为了区分,服务器就要给每个客户分配不同的身份标识,然后客户端每次向服务器发送请求的时候,都带上这个身份标识,服务器就知道这个请求来自于谁。
至于客户端怎样保存这个“身份标识”,可以有很多种方式。对于浏览器客户端,大家都默认采用cookie的方式。
服务器使用session把用户的信息临时保存在服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对于cookie来说是安全的,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session就会消失。
Cookie和Session的区别?
1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
Token
token的生成流程:
1.token是不存储用户的身份信息,而是通过自己的私钥+登录成功后生成的身份id+加密算法;
2.生成一个token值(也就是签名)。每次用户请求接口时,都要携带对应的token;
3.然后服务器每次都要去实时的解密用户的token(也就是验证签名对不对),如果验证失败,就是伪造的请求,返回错误码即可。反之直接返回对应的接口返回值。
cookie,session,token的作用
1.cookie:存放在浏览器相关的硬盘中
2.session:存放在服务器端的内存中,退出后,被清空
3.token:服务器端生成后,不保存,发给客户端,客户端的header里面每次发生请求时要携带