cookie和session在客户端与服务端交互过程中的作用
cookie和session最常用到的场景就是,登录场景,当一个用户在客户端的登录页面时,每一用户的登录场景都是相同的,服务端如何去区分不同的用户呢?
如果我们已经进入到了登录页面后的页面,我们在用其他的浏览器去直接访问者页面,为啥会进不去,服务区会报错?
每个用户使用的浏览器中都会记录一个cookie,当一个用户进行登录操作的时候,登录成功后,在客户端和服务端会进行一次交互,服务端会针对本次进行登录的用户产生一个sessionId,交互过程为客户端向服务端发送一次请求,服务端对这次请求进行校验是否合法,校验通过后服务端会给客户端发送一次响应,返回的响应中就会包含 sessionId 客户端接受到这次响应后,会把返回的sessionId记录到cookie中去,客户端在发送下一次访问请求的时候,会携带cookie—sessionId ,服务端会对此次进行一个校验sessionId,sessionId通过,就不需要登录,直接跳转到登录后的页面
换一个浏览器无法直接跳转登录后界面的原因也就是因为新的 coookie中没有存储对应的sessionId,也就无法登录成功,也叫拦截器
但是cookie—sessionId这种模式,更加适合单线程场景,对于多线程集群场景实用性就不高,在集群的环境下,一个大的功能会被分成许多个小的模块,每一个机器只会负责其中的一个小模块,各各小模块之间的信息交互是有滞后性的。
比如我们进行登录时A机器负责完成,我们要去完成功能B可能就在B机器上,A和B是两个不同的服务端,由于信息交互的滞后性,我们在进行B操作的时候,可能就会因为B中没有对应的sessionId而导致的请求不通过等问题
