我正在开发一个firefox插件。我使用localStorage保存一些数据并检索。 检查它是否可用的功能
if(!localStorage.getItem('font')) {
populateStorage();
}else{
var aValue = localStorage.getItem('font');
alert(aValue);
如果没有,则创建
function populateStorage(){
localStorage.setItem('cname', name);
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'myCat.png');
}
这是可以正常运行的localhost,但是如果我访问google.com等其他主机并尝试让我找不到错误
if(!localStorage.getItem('font')) {
alert('Not found !!!!');
}else{
var aValue = localStorage.getItem('font');
alert(aValue);
}
有什么办法可以解决此问题?还是我做错了方法?
答案 0 :(得分:1)
LocalStorage旨在 只能从同一主机访问。这样可以使不同的网站具有不同的数据范围,并确保一个网站无法访问另一网站的数据。
从MDN,
只读的localStorage属性允许您访问文档原点的 Storage对象;存储的数据跨浏览器会话保存。
发件人:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
如果需要在不同域之间共享数据,则应使用服务器端持久性。
答案 1 :(得分:0)
据我了解,本地存储不是跨域解决方案,因此此行为是正确的。 您需要做的是休闲MDN解决方案。我发现了这样的东西:
// define 2 objects
var monster = {
name: "Kraken",
tentacles: true,
eyeCount: 10
}
var kitten = {
name: "Moggy",
tentacles: false,
eyeCount: 2
}
// store the objects
browser.storage.local.set({kitten, monster})
.then(setItem, onError);
(从MDN复制的代码> JavaScript API>存储)
在此解决方案中,数据将固定到浏览器/扩展名,而不是域。但是请注意,当用户清除浏览器缓存或类似内容时,数据仍将被破坏。