IE11(Edge)中sessionStorage导航离开即清除是否为常见行为?
IE11/旧版Edge中sessionStorage跨域名导航时被清除的常见性
这确实是IE11以及基于IE内核的旧版Edge的已知且常见的行为,和Chrome、Firefox等现代浏览器的表现差异非常明显。
根据微软的文档描述:
window对象的sessionStorage属性会在单个标签页的生命周期内(顶级浏览上下文持续期间)维护键值对。
这里的核心差异在于不同浏览器对「顶级浏览上下文持续期间」的理解和实现:
- 在Chrome、Firefox等现代浏览器中,同一标签页内的跨域名导航并不会终止会话,sessionStorage的数据会保留在原域名的上下文里——当你返回原域名时,依然可以访问到之前存储的数据(跨域时无法访问其他域名的sessionStorage,但数据不会被清除)。
- 但IE11和旧版Edge则把跨域名导航视为当前会话的结束,会直接清除当前标签页的sessionStorage,哪怕之后再返回原域名,数据也无法找回。
如果需要兼容这种场景,你可以考虑这些替代方案:
- 使用
localStorage:数据会持久化存储,直到手动清除,但要注意如果用户不主动清除,数据会一直存在,可能不符合会话级存储的需求。 - 使用Cookie:适合存储少量会话数据,不过有4KB的大小限制,且会随每个请求发送到服务器。
- 推动用户升级到基于Chromium的新版Edge:新版Edge已经和Chrome行为一致,不存在这个问题。
内容的提问来源于stack exchange,提问作者chfw
相关产品推荐
相关产品推荐

