我在环聊应用中访问window.indexedDB时遇到了一些问题。我因为安全问题而假设它。 indexedDB是否存在于iframe中?我也没有权限访问window.top.indexedDB。是否可以将持久存储从一个环聊发送到另一个环聊?如何在同一个环聊会话中的磁盘(RAM外)存储?
答案 0 :(得分:0)
indexedDB是否存在于iframe中?
不靠自己。 IndexedDB作为DOM上的API公开。如果没有前缀,您可以在window.indexedDB
找到它。
当然可以在框架内使用。当在iFrame中使用IDB时,它会根据same-origin policy将其数据存储在框架内容的主机名上。实质上,这意味着您可以从同一个域访问数据,但不能跨域访问。请注意,同源上下文中的“相同域”表示域,协议和端口的匹配元组。
如果您遇到有关Google Hangout实施的父/子问题,我会检查您的框架的主机名并将其与父域进行比较。您可以通过弹出开发工具并选择iframe
而不是<top frame>
并查看位置值是否匹配来在Chrome中执行此操作。
这样的事情可以解决问题:
console.log( [window.location.protocol, '//', window.location.hostname, window.location.port ? ':' + window.location.port : ''].join('') );
如果您需要跨域,协议或端口进行通信,请使用iframe
postMessage
()界面。