应用场景
Session
由于http为无状态的,无法记录区分不同用户的请求,因此在发送http请求时附带session id可以标志不同的用户,实现向购物车添加产品这个功能
缺点
- 每个用户独有的session存在于服务器,增加服务器负担
- 负载均衡时,访问不同服务器时,session复制,增加服务器负担---> 解决方法:session sticky 固定访问同一个服务器(仍然无法避免session复制)
- session集中到某一服务器,存在单点失败的风险,且服务器宕机可能造成大规模重新登陆
解决方法
通过客户端发送数据,并携带签名 即toekn,服务端使用密匙计算数据得到签名并与token进行验证。
CPU计算时间换存储空间
Cookie
cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。
由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
Token
用户登录校验,验证成功后服务器返回一个toekn给客户端,客户端下次请求携带token,服务器采用filter进行校验,校验成功返回数据,失败返回错误代码
可用使用cookie存储token,此时cookie用于存储而不用于认证
优点
- 无状态、可扩展
- 安全性
- 可扩展性
- 多平台跨域
- 结合JWT实现CORS(跨域资源共享)
未完待续