【发布时间】:2012-06-01 11:44:57
【问题描述】:
我正在尝试使用 iframe 将值存储在另一个域中(实际上,我正在使用位于 http://xauth.org/info/ 的 xauth 库)。但是,当我尝试使用 Chrome 存储任何内容时,它会返回“QUOTA_EXCEEDED_ERR: DOM Exception 22”,我认为这是访问错误。我在下面模拟了几个非常简单的页面来复制效果:
文件 1.html:
<html>
<head/>
<iframe src='http://127.0.0.1/2.html' />
</html>
文件2.html:
<html>
<head/>
<script>
console.log(localStorage);
localStorage.setItem('test', '123');
</script>
</html>
如果我将这两个都放在我的本地服务器上并访问 localhost/1.html 它会嵌入一个来自 127.0.0.1 的框架(Chrome 认为它是一个单独的域),并且我得到与上面相同的访问错误。猜测一下,即使我从另一个域嵌入了 iframe,并且 iframe 中的脚本正确引用了该域的 localStorage(正如我在 console.log(localStorage) 行中看到的那样),权限用于写入 localStorage 的内容来自首页的域。
简而言之,看起来没有 iframe 可以写入 Chrome 中的 localStorage。有人知道是否有办法绕过这个特定的安全“功能”吗?还是我做错了什么?
【问题讨论】:
-
注意我还检查了我的 localStorage 对象的 localhost 和 127.0.0.1 并保证它们是空的,所以我知道“超出配额”错误确实是错误的;我当然没有超过 5MB 的配额。
-
你解决了吗?我遇到了同样的问题
-
使用 postMessage...stackoverflow.com/questions/40461120/…
-
正如 Zvi Redler 所说,您是否尝试过使用 HTML5 postMessage 使用 IFRAME 在您的两个来源之间进行通信?你需要一个监听器和一个对 postMessage 的调用。请告诉我们您的发现。
标签: javascript google-chrome iframe local-storage