Firefox扩展中的localStorage抛出“操作不安全”。例外

时间:2014-04-24 12:54:55

标签: javascript firefox firefox-addon local-storage

我开发的Firefox附加组件使用localStorage在网站上下文中存储用户数据。它使用标准方法通过注入的内容脚本访问localStorage:

localStorage.getItem(key);
localStorage.setItem(key, value);

调用localStorege的代码通过PageMod注入网站:

pageMod.PageMod({
    contentScriptFile: [
        self.data.url("app.js")
    ]})

调用方法getItem / setItem时,抛出安全异常:

  

[例外......"操作不安全。"代码:" 18" nsresult:   " 0x80530012(SecurityError)"位置:""]

到目前为止,我还没有找到发生这种情况的原因。我怀疑它可能与旧的FireFox错误有关,但概率很低:http://meyerweb.com/eric/thoughts/2012/04/25/firefox-failing-localstorage/

也许有人可以提出一个可能导致问题的想法吗?

其他信息:

  • 我们正在使用Addon SDK 1.16
  • 因为FF 29.0 RC1(一切都适用于FF 28)
  • 而出现问题

3 个答案:

答案 0 :(得分:2)

我们还有一个扩展程序,并且在本地存储中遇到同样的错误。这是一个29的错误,因为@basarat注意到这个错误只应该抛出CORS问题。我们已经使用Aurora和Nightly进行了测试,没有任何问题。我们正在向Mozilla提交一个错误。

答案 1 :(得分:2)

如前所述,这是Firefox 29中的一个错误,应在第30版中解决:https://bugzilla.mozilla.org/show_bug.cgi?id=980023

目前,您可以通过重新分配内容脚本中使用的localStorage对象来解决此问题:

var localStorage = unsafeWindow.localStorage;

答案 2 :(得分:0)

只有在加载JavaScript文件跨域时才会抛出

The operation is insecure.。要启用操作安全,为JS文件提供服务的域必须启用CORS:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing