前端的 SessionStorage 请类比 LocalStorage ,设计的初衷就是 cookie 容量太小,前端需要一个更大的地方在浏览器端放置一些临时/永久数据。整个 storage 可以达到 5MB,所以当然不能每次都往服务器发送。
SessionStorage 的 Session 是指的浏览器端的用户会话,会话结束,storage 里的东西就会清空。这个和服务器一些框架里的 Session 不是一回事。服务器上你也许会定义用户15分钟内没有和服务器交互,就认为 session 结束了,但是 SessionStorage 里的这个 Session 是在你关闭了这个网站所有的 tab 之后 session 就结束了。
SessionStorage 只能通过 Javascript API 操作,后端无法通过 HTTP header 操控。也就是说 sessionStorage 里放什么完全取决于你的 JS 怎么写,和你的后端没有一丁点关系。至于 sessionStorage.sessionId 是个什么东西你就需要查一查你自己的 JS 了。
Cookie 是 HTTP 协议里规定的,白纸黑字写在 HTTP RFC 文档里的,JS 可以操控,后端通过 HTTP Header 也能操控。而 LocalStorage / SessionStorage 和 HTTP 协议没有半毛钱关系,人家是 WHATWG / W3C 对浏览器 API 的规定,跟服务器上的 Session 不存在直接关联。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…