localStorage在其他主机上不起作用-javascript

时间:2019-07-31 06:54:45

标签: javascript html firefox-addon

我正在开发一个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);
}

有什么办法可以解决此问题?还是我做错了方法?

2 个答案:

答案 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>存储)

在此解决方案中,数据将固定到浏览器/扩展名,而不是域。但是请注意,当用户清除浏览器缓存或类似内容时,数据仍将被破坏。