跨子域使用本地存储

2022-08-30 04:14:48

我正在用可以支持的浏览器(IE以外的任何人)上的localStorage替换cookie。问题是存储自己单独的本地存储对象。我相信它被认为是一个子域(如果你问我,这是一个愚蠢的决定)。如果用户最初处于打开状态并决定在下次访问时输入,则她的所有个人数据都将无法访问。如何让我的所有“子域”与主域共享相同的本地存储?site.examplewww.site.examplewwwsite.examplewww.site.example


答案 1

这就是我跨域使用它的方式...

  • 使用您父域中的 iframe - 比如说parent.example
  • 然后在每个域上,只需在您的iframe上发布消息child.exampleparent.example
  • 您需要做的就是设置一个协议,了解如何解释您的postMessage消息以与iframe进行通信。parent.example

答案 2

如果您只是针对此特定问题使用iframe和postMessage解决方案,我认为将数据存储在无子域cookie中可能会减少工作量(代码方面和计算方面),如果它尚未在加载时在localStorage中,请从cookie中获取它

优点:

  • 不需要设置额外的 iframe 和 postMessage。

缺点:

  • 将使数据在所有子域(不仅仅是www)中可用,因此如果您不信任所有子域,它可能不适合您。
  • 将在每个请求时将数据发送到服务器。不是很好,但根据您的方案,可能仍然比iframe /postMessage解决方案的工作少。
  • 如果你正在这样做,为什么不直接使用cookie呢?取决于您的上下文。
  • 4K最大cookie大小,域中所有cookie的总数(感谢Blake在评论中指出这一点)

我同意其他评论者的观点,这似乎应该是localStorage的可指定选项,因此不需要解决方法。