当构建Outlook Addin(第三方Cookie)时,在iframe中读取Cookie应该如何处理?

5
我目前正在开发一个与我们所提供的服务相关的Outlook附加组件,并且在提交时遇到问题。 我的问题是,尽管附加组件在Outlook中运行良好,但如果您尝试从Office 365的Safari加载它,则Cookie的读取将被阻止。
我们使用Office.js SDK来管理Exchange集成并提供对话框,用户通过该对话框登录。这会创建一个包含令牌的Cookie,然后我们在JS中读取它以随任何API请求一起发送。启用第三方Cookie的阻止(或使用Safari)将导致iframe无法访问来自同一来源的Cookie。启用第三方Cookie(或不使用Safari)时,一切都按预期工作。
对我们来说问题在于,除非附加组件在最新版本的Safari上工作,否则Microsoft不会批准该附加组件。
提前致谢。

你能澄清一下是哪段代码创建了cookie吗?是Office.js API、你的代码还是认证库?谢谢。 - Outlook Add-ins Team - MSFT
1
嗨,我们在通过office.js库创建的对话框中创建cookie:Office.context.ui.displayDialogAsync()我可以验证这些cookie存在于iframe的来源中,但是当我尝试在插件托管在iframe中时读取它们时,我得不到任何反馈。实际的cookie创建使用一个简单的js cookie库。Cookies.set("loginToken", token.access_token, { expires: 7 }); - Sergio
嗨,感谢您的回复。您能否澄清以下问题 - 调试控制台中是否有相应的错误消息?如果有,请分享一下吗? - Outlook Add-ins Team - MSFT
似乎没有任何错误。Cookie 简单地为空。 - Sergio
你会期望浏览器能够在 iframe 中访问 cookie 吗? - Sergio
1个回答

0

我们怀疑这可能与Webkit本身的回归有关,即使用户已经与主页面进行了交互,第三方cookie也会被阻止。

这个变化导致了回归: https://trac.webkit.org/changeset/251353/webkit

这个变化修复了它: https://trac.webkit.org/changeset/252623/webkit

如果是这种情况,那么我们必须等待修复发布。然而,只有在用户在窗口中访问主页面后才能访问第三方cookie(如果您在显示对话框中设置cookie,那应该理想地工作)。 (在此处阅读更多here)作为解决此问题的一种方法,您可以使用localStorage在浏览器中存储临时信息,这应该不受此回归的影响,或者您可以使用服务器端cookie。


除此之外,您能告诉我们您提交验证的插件名称吗? - Outlook Add-ins Team - MSFT
嗨。没问题。这是ER Tracker插件。 - Sergio
@OutlookAdd-insTeam-MSFT,使用localStorage存储敏感信息是否安全? - Savva Sergey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接