将 Excel 加载项部署到 Web 时,我在自定义函数和任务 Pane 之间共享 cookie 时遇到问题。我关注了这个guide在任务 Pane 和自定义函数之间共享运行时和 cookie。我在离线 Excel 中(Mac 和 Window 中)进行了测试,效果很好。但是,当我在 Web 上旁加载该函数时,任务 Pane 会作为 Web 内的 iframe 加载,因此任务 Pane 和自定义函数具有不同的运行时和 cookie。没有错误消息,它们只是不再共享运行时,这弄乱了我的自定义函数,该函数使用用户从任务 Pane 输入的 cookie 来验证它们。
我的目标受众不是在网络上使用 Excel 的人,但这是将加载项发布到 Appsource 的验证过程的一部分,因此我需要找到一种方法使其也可以在网络上运行。感谢任何帮助。
最佳答案
此问题是由网络浏览器的新安全功能引起的。第三方cookie被该功能屏蔽,导致iframe无法读取cookie。您可以尝试以下方法来解决:
对于 Edge/Chrome,将 SameSite=None
和 Secure
设置添加到 cookie,例如
document.cookie="...your cookie;SameSite=None; Secure"
对于 Safari,请参阅此文档:Develop your Office Add-in to work with ITP when using third-party cookies
此外,Web Storage API与 Excel Online 中的共享运行时配合良好。如果您将 Cookie 用于身份验证以外的目的,请考虑在您的场景中使用 localStorage
。
谢谢
润东
关于office-js - Cookie 不在 Excel 网页版中的任务 Pane 和自定义函数之间共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70841486/