【问题标题】:Local Storage - Same origin but different contents本地存储 - 来源相同但内容不同
【发布时间】:2021-05-07 06:56:20
【问题描述】:

我们有一个非常奇怪的错误,我们怀疑它是 Edge Webview2 特有的(基于 Chromium)。

我们正在开发 Outlook 插件,在我的机器上,Outlook 已升级为使用 Edge Webview2 组件而不是 Edge Webview(基于 Legacy Edge)。在此升级期间,它破坏了我们的应用程序。

当我们对其进行调查时,似乎根据用户所在的 页面,尽管来源相同,但仍会为我们提供不同的 localStorage 上下文 - 这一切都会在重新启动 Outlook 或关闭插件后持续存在 -在。此屏幕截图展示了这一点:

我们应该查看什么来解决或调试此问题?

注意:所有其他客户端(所有浏览器中的 Outlook for Web、macOS Outlook 等)都没有此问题。

【问题讨论】:

  • 请注意,我们能够通过使用postMessage 在两者之间进行通信并使用它来同步localStorage 来解决此问题,但这并没有解决或发现核心问题
  • 我在 WebView2 中测试了 localStorage,它运行良好。您能否提供a code example 可以重现该问题?您是否尝试过在 Edge Chromium 中使用 Outlook for Web? WebView2 使用 Edge Chromium 作为渲染引擎。如果它适用于 Edge Chromium 中的 Outlook for Web,那么我认为问题可能与 Outlook 桌面客户端有关。
  • 在 Edge 中,工具菜单中应该有一个发送反馈链接,用于报告错误。太糟糕了,微软似乎没有办法公开跟踪 Edge 错误。
  • 具有讽刺意味的是,发送反馈/报告问题按钮在 Outlook 中使用的 Webview2 中不起作用,我怀疑这是在 Outlook 中实现 Webview2 的问题,而不是 Webview2 本身。我确实设法通过合作伙伴门户向 Microsoft 提交了支持票,我们将看看情况如何
  • 那很好。如果您有任何解决方案,也可以在此处发布。它可以在未来帮助其他社区成员解决类似的问题。

标签: javascript webview local-storage microsoft-edge outlook-addin


【解决方案1】:

发生这种情况的原因是加载项在注册表中已标记为“调试”模式。有一个错误(/功能),面板将处于“调试”模式,但从该面板启动的对话框将处于“常规”模式。每种模式的user-data-dir 是一个不同的目录,因此这有效地使其具有隔离的本地/会话存储。

要禁用此调试模式,您可以删除以下所有键:

Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\WEF\Developer

有关此问题的更多信息可以在 Office JS 问题跟踪器中找到:

https://github.com/OfficeDev/office-js/issues/1741


这个特殊的调试功能,我找不到任何公共文档,也不知道它是如何启用的。此调试功能不会影响“Classic Edge”渲染引擎。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多