2016-05-24 74 views
1

我在我的網頁中使用第三方腳本,它具有在localstorage和indexeddb中存儲數據的邏輯。存儲的起源是我的域中託管的網頁的域。我想擁有存儲邏輯所在的第三方腳本的域。那可能嗎?是否可以編輯indexeddb的來源?

編輯:我應該已經更清楚了:爲什麼indexeddb使用html頁面的起源而不是javascript文件的來源,當他們被託管在2個不同的域?

回答

0

這是不可能的。 Cookies,localStorage或indexedDB資源已被定位到發佈它們的域名。這就是所謂的同源策略

https://en.m.wikipedia.org/wiki/Same-origin_policy

請注意,如果你在你的領域使用第三方腳本,您的域的本地存儲將用於

要使用一個二級域名發出的localStorage(這可以控制),則可以使用其他域的嵌入式iframe來訪問資源,以及與的postMessage

主域通信參見http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage

而在這個項目你有幾個域

https://github.com/Aralink/ssojwt

+0

高興之間共享存儲在localStorage的認證令牌跨域SSO的一個完整的例子找人回答我這個。我試圖從2天中弄清楚這一點,但沒有運氣。對於Cookie,當JS託管在與網頁不同的域中時,我使用使用js域的「window.location.hostname」。我沒有找到一種方法來爲indexeddb或localstorage執行相同的操作。應該有一種方法來實現這一點.. –

+0

這是一個安全限制。想到修改localStorage的accounts.google.com應該是不可能的。有可能對iframe做類似的事情。我會改善迴應。如果您認爲回答您的問題,請將其標記爲正確 – pedrofb

+0

我正在討論使用Iframe將本地存儲數據存儲在其他域中的不同示例。我仍然不清楚或困惑的一件事是,有沒有辦法知道本地存儲的價值,如果我只知道密鑰名稱而不是域名?我正在尋找的要求是:我有一個JavaScript文件,我的所有客戶端(不同域)都使用該文件,本地存儲數據存儲在各自的客戶端域中。當用戶在不同的客戶域中看到時,我應該能夠通過訪問本地存儲數據來判斷? –

相關問題