2014-03-29 66 views
2

我有一些問題從環聊應用訪問window.indexedDB。我假設它是因爲安全問題。 indexedDB是否存在於iframe中?我也沒有權限訪問window.top.indexedDB。是否有可能持續存儲從一個環聊持續到另一個環聊?在同一環聊會話中,磁盤(內存不足)上的存儲情況如何?indexedDB可用於Google環聊嗎?

+0

您是否嘗試過localStorage?另外,如果您發佈了一些代碼和一些錯誤,其他人可能會提供幫助。 – Paul

+0

我們可以使用更多信息 - 當然。代碼示例將是最好的。但是我可以根據你所說的話猜測你的問題,這對我而言意味着你正在尋找跨域的IDB信息。我已根據所提供的信息提供了最佳答案。 – buley

+0

如果您可以從Google Handout框架獲取任何數據,則應該獲得安全漏洞獎勵。 –

回答

0

IndexedDB是否存在於iframe中?

不是自己的。 IndexedDB作爲DOM上的API公開。在沒有前綴的情況下,您可以在window.indexedDB找到它。

它當然可以在一個框架內使用。當在iFrame中使用IDB時,它將根據same-origin policy將其數據存儲在成幀內容的主機名上。實質上,這意味着您可以訪問來自同一個域但不跨域的數據。請注意,同源的上下文中的「相同域」意味着域,協議和端口的匹配元組。

如果您在執行Google環聊時遇到了父/子問題,我會檢查您的框架的主機名並將其與父域進行比較。您可以在Chrome中通過彈出開發工具並選擇iframe而不是<top frame>並查看位置值是否匹配。

enter image description here

像這樣的東西應該做的伎倆:

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

如果您需要在域,協議或端口交談使用iframepostMessage()接口。