打开一个网页,发现它需要登录,有可能还有各种各样的验证码。 输入账号密码,或者扫码之后登录上网页,解锁更多新功能。 只要我们不关闭网页,这个登录状态就会被保持着。
这个场景都不陌生吧。
我们关闭浏览器,再次打开浏览器,会发现有的网页依旧保持着登录状态,比如说CSDN,而有的网页已经被退出登录了,想再次进入就需要重新登录,这样的网页太多了。
是什么样的机制在支撑着这一切的运转呢?
站在网站的角度,我们要讲一下前端和后端,session和cookie。
web客户端请求Tomcat服务端,属于HTTP请求(不是TCP,也不是UDP,注意区分)。 http请求是无状态的,即每次请求服务端,都是一个全新的请求,服务端根本不知道我是谁。所以当我从客户端发起一次登录请求并登录成功之后,再进行其他的请求,因为服务端无法识别我是我,所以它会叫我再登录,所以我绝对会举报这家网站的,耶稣也拦不住,我说的!!!
为了证明我是我,也为了这些网站还能够开的下去,它们准备为我在这个客户端上的所有请求(或者一类请求),专门给我开一个房间(如果是一类请求开一个房间,那对于我在这个客户端上的所有请求就会开多个房间),然后把钥匙给我,或者给我一串儿钥匙。
机会