【问题标题】:Can indexedDB be used in a Google Hangout?indexedDB 可以在 Google Hangout 中使用吗?
【发布时间】:2014-03-29 09:35:18
【问题描述】:

我在从环聊应用访问 window.indexedDB 时遇到了一些问题。我假设它是因为安全问题。 indexedDB 是否存在于 iframe 中?我也无权访问 window.top.indexedDB。是否有可能让持久存储从一个视频群聊持续到另一个视频群聊?同一环聊会话中的磁盘(内存不足)存储如何?

【问题讨论】:

  • 你试过localStorage吗?此外,如果您发布一些代码和一些错误,其他人可能会有所帮助。
  • 我们当然可以使用更多信息。最好有代码示例。但我可以根据您所说的猜测您的问题,这表明您正在寻找有关跨域 IDB 的信息。我已根据所提供的信息提供了最佳答案。
  • 如果您可以从 Google 讲义框架中获取任何数据,那么您应该获得安全漏洞赏金。

标签: javascript indexeddb hangout


【解决方案1】:

indexedDB 是否存在于 iframe 中?

不是靠自己。 IndexedDB 作为 DOM 上的 API 公开。如果不加前缀,您可以在window.indexedDB 找到它。

它当然可以在框架内使用。在 iFrame 中使用 IDB 时,它将根据 same-origin policy 将其数据存储在框架内容的主机名中。从本质上讲,这意味着您可以从同一个域访问数据,但不能跨域访问。请注意,同源上下文中的“同域”表示域、协议和端口的匹配元组

如果您在实施 Google Hangout 时遇到父/子问题,我会检查您框架的主机名并将其与父域进行比较。您可以在 Chrome 中通过弹出开发工具并选择 iframe 而不是 <top frame> 并查看位置值是否匹配来做到这一点。

这样的事情应该可以解决问题:

console.log( [window.location.protocol, '//', window.location.hostname, window.location.port ? ':' + window.location.port : ''].join('') ); 

如果您需要跨域、协议或端口进行通信,请使用 iframe postMessage() 接口。

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多