2016-05-24 70 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文件,我的所有客户端(不同域)都使用该文件,本地存储数据存储在各自的客户端域中。当用户在不同的客户域中看到时,我应该能够通过访问本地存储数据来判断? –

相关问题