Token、Cookie、Session都是用来做持久化处理的,目的就是让客户端和服务器端互相认识。HTTP请求默认是不持久的,没有状态的,谁也不认识谁。

Token(鉴权码):用户身份的验证方式,有点类似于Cookie,相对来说更安全。Token存在哪都行,Token可以是无状态的,可以在多个服务间共享。比如你的数据可能需要和第三方共享,或者允许第三方调用API接口。

例如:在上电商项目中调用登录以及添加购物车添加和添加商品等接口等都需要用到Token值(Token值是动态的每一次登录都会改变)来判断你是否已经进行授权,最简单的Token组成uid(用户唯一的身份标识)、time(当前的时间戳)、sign(十六进制字符串)。

Token特点:

        1、无状态、可扩展;

        2、支持移动设备;

        3、跨程序调用;

        4、安全性高;

        5、服务器占用资源低;

Cookie:是存储在浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。

Cookie由服务器生成,通过响应头Set-Cookie字段发送给浏览器,浏览器把Cookie以key value形式保存到某个目录下的文本文件里,下一次请求同一网站时会把该Cookie发送给服务器。由于Cookie是存储在客户端上的,所以浏览器加入了一些限制确保Cookie不会被恶意使用,同时不会占用太多磁盘空间,所以每个域的Cookie数量是有限的。

Session:从字面上讲,就是会话。服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,默认是采用Cookie的方式。

服务器端使用Session把用户的信息临时保存在了服务器上,用户离开网站后Session把用户的信息临时保存在了服务器上,用户离开网站后Session会被销毁。这种用户信息存储的方式相对Cookie来说更安全,可是Session有一个缺陷,如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候Session会丢失。

1、服务器占用资源更大是服务器压力增大;

2、安全性和扩展性不强;