来自iframge的Firefox localstorage - SecurityError:操作不安全

时间:2014-06-12 14:30:36

标签: javascript firefox

我有2个子域名:

  • www.example.com =仅限登录用户
  • internal.example.com =公共网站

由于我使用localstorage来存储我在www.example.com上需要的internal.example.com上的一些信息,我实现了以下解决方案:

我在www上加载了位于内部的iframe。我将文档域值设置为“父域”

document.domain = "example.com";

现在在www上,我可以通过执行以下操作访问www上的localStorage:

frames['internalFrameName'].window.localStorage;

现在我可以读写值了。这适用于Chrome和Internetexplorer,它在Firefox中工作,直到FF30的最后一次更新。现在我收到了错误:

SecurityError: The operation is insecure.

任何想法如何解决?

2 个答案:

答案 0 :(得分:1)

您可以使用消息传递系统在两个帧之间进行通信。然后iframe就可以发送本地存储数据。

这可能会对您有所帮助:How to communicate between iframe and the parent site?

您需要使用框架[' internalFrameName']。postMessage(message,targetOrigin,[transfer]);

答案 1 :(得分:1)

Gecko会在禁用Cookie时抛出错误消息,除了localStorage的对象检测之外(我确定您已经在您未发布的代码中执行此操作)首先检查是否支持cookies。

变化:

if (window.localStorage)

要:

if (document.cookie && window.localStorage)