http是无状态的,每次请求都是干净的请求。
1.cookie是浏览器存储数据的一个容器,在早期的web系统中,一般都是使用cookie来进行会话跟踪,什么意思呢?例如登录功能,我登录成功了之后,后端可以response.setCookie(这个是http封装的一个方法,其实是在header中的)来设置用户名到cookie对象中,然后程序响应到前端浏览器进行存储,下次访问的时候带上这些信息就可以了,为了安全,可以加上secret。
2.session是后端的会话跟踪,是httpservletrequest中的一个方法,说下流程吧,登录的时候,后端验证通过后就保存到session中,便于跟踪,返回给前台的时候,系统默认会设置一个cookie,名字叫啥有点忘记了,这个cookie的值就是这个session的id,过期时间是-1,然后浏览器每次访问的时候会带上这个sessionid和后端的session比对。缺点是当访问用户过多时,内存吃不消,不便于横向发展。
3.token,jwt,由三部分组成,分别是,头部,负载,盾牌。只存储在前台,每次访问都会带上这个token去后台解析,如果解析出来三部分都对,则可以进行下一步操作。
以上只是从大概意思上分析了这三种的原理,具体代码请参考官方文档。