一,Cookie
1.概念
Cookie是由Web服务器保存在用户浏览器上的一段key=value格式的文本。用于保存用户信息。
2.作用
当客户端首次访问服务器时,由服务器生成token信息放在响应头中发送给客户端。
在之后的访问中客户端需要在请求头中附带cookie信息,从而完成鉴权。
3.分类
持久cookie:保存在硬盘中,只有达到失效时间才会自动清除。
会话cookie:保存在内存中,浏览器关闭后会自动清除cookie。
二,Session
1.概念
sesson依赖cookie实现,是服务器分配的一块存储空间,位于服务器中。浏览器在cookie中设置session ID,服务器根据session ID获取会话中存储的信息,进而确定会话身份。
2.作用
客户端访问服务器,服务器将session ID返回给客户端,这样客户端下次访问时携带session ID来得到服务器对应的value。
3.缺点
若服务器A做了负载均衡,那么在A访问激增时会转发到服务器B,但是B中没有A中的session,导致session失效。
三,Token
1.概念
Token是由服务器生成的一串字符串,作为客户端进行请求的一个令牌,token可以存储用户信息,如ID等等,需要经过解析。服务器将token返回给客户端后,客户端之后的请求携带上这个token即可。
2.作用
减轻服务器压力,减少频繁查询数据库。
四:Cookie与Session的区别
存储位置:cookie存储在浏览器或本地。session存储在服务器上。
安全性:cookie可能被篡改或利用,用以攻击网站。session相对较安全。
占用资源:cookie服务器性能消耗小,session会占用服务器性能。
存储空间:单个cookie大小不能超过4k,很多浏览器会限制一个站点的cookie数量。session没有大小限制,与服务器内存大小相关。
存储类型:cookie只能存储string,session可以任意java对象
五:Session与Token的区别
存储位置:token在客户端,session在服务端。
安全性:token作为身份认证,安全性比session好。
跨域:token可以跨域,session不可跨域。
token是时间换空间,session是空间换时间。
token可用于前后端分离项目,session只适用于客户端和服务器代码运行在同一台服务器上。
token是开发定义的,session是http协议规定的。