我开发的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/
也许有人可以提出一个可能导致问题的想法吗?
其他信息:
答案 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)
The operation is insecure.
。要启用操作安全,为JS文件提供服务的域必须启用CORS:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing