今天去面试前端开发,做完一张卷子后,面试官开始针对我卷子上的回答提问。
第一大块是说cookie和session的区别。
第一个问题是session是什么
我很从容的回答了说session是用来给无状态的http增加有状态的识别信息。
抽抽的地方来了,面试官问我session是怎么获取的?
我竟然说了一句根据userId获取,很感谢当时两位面试官竟然没有笑场=。=
现在回想,真是肠子都绕在一起了。
正确的理解是:
在服务器端生成session后,session会被存储在服务器内存中,
每一块session都被以sessionId唯一标识,sessionId是一串由32位数字和字母组成的code。
session块之间无法互相访问。
在服务器返回给客户端时,sessionId会随response返回到浏览器的cookie中。
客户端下次向服务器发送请求时,会将sessionid作为cookie的一部分附带在request中。
服务器根据request中的sessionid找打对应的session,执行后续业务操作。
如果server的容器是Tomcat或者JBoss,你可以在cookie中看到一个叫JSessionId的cookie
如果把该Cookie删除,往服务器发送请求时,服务器因为找不到对应的session块,所以认为当前无用户登录。