Outlook桌面端加载项Cookie被清除但localStorage留存的原因是什么
行为差异核心原因
二者在Outlook WebView中的存储隔离策略完全不同,并非运行逻辑一致:
- Cookie的清理逻辑:Cookie默认绑定请求会话上下文,Outlook桌面端为每个消息的加载项实例创建独立的会话沙箱,当用户关闭消息面板、切换不同消息时,当前会话的所有临时Cookie会被直接销毁。即使是设置了过期时间的持久化Cookie,Outlook加载项平台也会默认限制跨会话的Cookie共享,避免不同消息上下文的身份凭证、业务数据出现串扰。
- localStorage的保留逻辑:localStorage是W3C定义的同源持久化存储,仅和加载项的部署源(协议+域名+端口)绑定,只要加载项的部署地址不变,不同消息的加载项WebView实例会共享同一份localStorage存储空间,Outlook平台默认未对同源加载项的localStorage做会话级隔离,因此数据会被长期保留。
是否为Edge WebView调用Bug
该差异不属于Bug,是Outlook加载项平台的刻意设计:
微软为平衡加载项的上下文安全性和使用便捷性,对两类存储做了不同的策略适配:Cookie的会话级清理是为了保证每个消息上下文的独立性,避免跨消息的权限泄露、数据污染;localStorage的持久化则是为了方便加载项存储用户通用配置、非会话相关的公共数据,降低每次打开加载项的初始化成本。
如果需要存储跨会话的持久化数据,更推荐使用Office.js原生提供的Office.context.roamingSettings接口,该接口的存储行为不受WebView版本、平台策略调整影响,兼容性更强。
内容的提问来源于stack exchange,提问作者ChokSheak Lau
相关产品推荐
相关产品推荐

