为了账号安全,请及时绑定邮箱和手机立即绑定

HTML5数据库和localStorage可以在子域之间共享吗?

/ 猿问

HTML5数据库和localStorage可以在子域之间共享吗?

扬帆大鱼 2019-11-18 12:48:10

我正在尝试使用Safari在子域之间共享数据。我想使用HTML5数据库(特别是localStorage,因为我的数据不过是键值对)。但是,似乎无法从sub.domain.com访问存储到domain.com的数据(反之亦然)。在这种情况下,有什么方法可以共享一个数据库?



查看完整描述

3 回答

?
守着星空守着你

Zendesk的这个库对我有用。


样品:



// Config s.t. subdomains can get, but only the root domain can set and del

CrossStorageHub.init([

  {origin: /\.example.com$/,            allow: ['get']},

  {origin: /:\/\/(www\.)?example.com$/, allow: ['get', 'set', 'del']}

]);

请注意$用于匹配字符串的结尾。上例中的正则表达式将匹配,例如valid.example.com,但不匹配invalid.example.com.malicious.com。


客户


var storage = new CrossStorageClient('https://store.example.com/hub.html');


storage.onConnect().then(function() {

  return storage.set('newKey', 'foobar');

}).then(function() {

  return storage.get('existingKey', 'newKey');

}).then(function(res) {

  console.log(res.length); // 2

}).catch(function(err) {

  // Handle error

});

检查https://stackoverflow.com/a/39788742/5064633


查看完整回答
反对 2019-11-18
?
拉莫斯之舞

谷歌浏览器默认情况下会阻止从另一个域的iFrame进行localStoage访问,除非启用了第三方Cookie,iPhone上的Safari也是如此...唯一的解决方案似乎是在另一个域上打开父域,然后发送给子域通过window.postMessage,但在电话上看起来丑陋而杂乱...


查看完整回答
反对 2019-11-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信