1.背景
最近有朋友问我其面试时遇到的一个不常见的问题:浏览器禁用cookie后session还能用吗?,怎么解答。
2.cookie与session联系入手
2.1 理论基础
一般默认情况下,在会话中,服务器存储 session 的 sessionid ,而sessionid 是通过 cookie 存在浏览器里的。如果浏览器禁用了 cookie,那么浏览器请求服务器时将无法携带 sessionid,进而服务器无法识别请求中的用户身份,所以,session失效,不能正常使用。
2.2 具体解释
服务器端调用了requet.getSession()的时候, 产生session对象。创建session的同时 生成sessionId(代表唯一sesssion的字符串), 服务器自动通过Cookie的方式写给浏览器。下次浏览器携带cookie(SessionId)找到对应的session使用。如果用户禁用cookie,则cookie(SessionId)无法存储,浏览器每次访问都不携带任何cookie,包括cookie(SessionId)。