JavaWeb 中为何采用 Cookie 存储 SessionId
在 JavaWeb 中,每个用户会话都有一个唯一的 ID,称为 SessionId。为了在会话期间将 SessionId 关联到用户浏览器,通常采用 Cookie 的方式进行存储。
为什么不能以 Cookie 方式存储?
反向思考一下,如果不能以 Cookie 方式存储,还存在哪些其他选择?
立即学习“Java免费学习笔记(深入)”;
LocalStorage 和 sessionstorage
LocalStorage 和 SessionStorage 是 html5 中引入的两种存储机制,支持在浏览器中存储数据。但是,这些机制是后期才出现的,而 JavaWeb 技术应用广泛,在早期阶段并不支持。
禁用 Cookie
浏览器可以禁用 Cookie。如果浏览器禁止使用 Cookie,则无法通过 Cookie 来存储 SessionId。
因此,在无法使用 LocalStorage 和 SessionStorage、浏览器可能禁用 Cookie 的情况下,Cookie 成为存储 SessionId 的最佳选择。
为了解决浏览器禁用 Cookie 的问题,有些网站会将 SessionId 附在 URL 的末尾,如 https://xxx.xx.xx/?jssionid=xxxxx。这种方式同样可以实现 SessionId 的记录。