You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Teams应用插件子域存储及sessionStorage跨域隔离问题咨询

MS Teams插件存储相关问题解答

1. 能否在MS Teams应用插件的子域内存储localStorage或sessionStorage数据?

可以直接使用localStorage和sessionStorage存储数据。MS Teams的应用插件(如Tab应用)通常以iframe形式嵌入Teams客户端,插件页面运行在你自己的自定义子域(或Teams提供的托管子域)下,这两个存储API会将数据绑定到当前插件的子域,不会和Teams主域或其他插件的域混淆。

只需在插件页面的代码中直接调用API即可:

// 存储数据
sessionStorage.setItem('user-info', JSON.stringify({ id: '123', name: '张三' }));
localStorage.setItem('app-config', 'dark-mode');

// 读取数据
const userInfo = JSON.parse(sessionStorage.getItem('user-info'));

2. 如何确保存储的数据不跨域共享?网页版Teams中sessionStorage跨域共享是否为预期行为?

标准的sessionStorage和localStorage遵循严格同源策略,不同域名(包括同一顶级域下的不同子域)默认完全隔离,不会共享数据。

你在网页版Teams中观察到的跨子域共享情况,并非sessionStorage的标准预期行为,而是Teams自身的架构设计导致的——比如部分子域通过设置document.domain放宽了同源限制,或是Teams使用了跨iframe的共享上下文机制。这种情况下,不要在Teams主域的上下文(如控制台直接操作)存储敏感数据。

要确保个人敏感数据不跨域共享,必须在你的插件自身的页面域名下存储数据:插件的sessionStorage/localStorage只会属于你的子域,Teams主域或其他插件的域无法访问这些数据。

3. 如何限制sessionStorage数据在子域间的流动?

针对你遇到的在teams.microsoft.com及其他子域可见sessionStorage数据的情况,解决方法如下:

  • 不在Teams主域上下文存储数据:确保所有敏感数据的存储操作都在你的插件页面代码中执行,而非在Teams主域的控制台或其他非插件上下文操作。插件自身的sessionStorage数据会严格绑定到你的子域,不会流向其他子域。
  • 避免放宽同源限制:如果你的插件运行在Teams托管的子域下,不要在代码中设置document.domain = "teams.microsoft.com",保持精确的域名隔离,这样sessionStorage只会在当前子域内有效。
  • 敏感数据优先用sessionStorage:sessionStorage仅在当前浏览器标签页的会话中存在,标签关闭后数据自动清除,相比localStorage更适合存储敏感的个人信息。

内容的提问来源于stack exchange,提问作者Waseem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:05:40