【问题标题】:Can the localStorage be cleared for a specific application?可以为特定应用程序清除 localStorage 吗?
【发布时间】:2015-09-15 20:09:44
【问题描述】:

可以为特定应用清除 localStorage 吗?

用例如下: - 我们有一个名为“Agent Cockpit”的自建应用程序,它与 Application1 共享相同的域名 - 此代理座舱使用本地存储进行某些设置 - 当有人在 application1 上单击“注销”时,所有这些设置都会丢失。我们注意到,当退出 Application1 时,提交了“LocalStorage.clear() 命令,该命令会删除 LocatStorage 中的所有项目。

-- 使用带有应用程序标识符的本地存储密钥可以防止上述情况。但是,我仅有权在“Agent Cockpit”应用程序中进行更改。有没有关于如何实现这一目标的文档? 或者是否有必要为所有使用 localstorage 的应用程序设置一个单独的密钥?因为目前无法在 application1 中进行更改。

我该如何实现?

【问题讨论】:

  • localStorage 仅同源,因此除非它们位于同一域中,否则您根本无法修改其他“应用程序”存储
  • localStorage 是特定于域的。因此,只有与第一个应用程序位于同一域中时,第二个应用程序才会受到影响
  • 请注意,浏览器扩展也可以使用本地存储,就好像它们是您域的一部分一样。如果您希望对 3rd 方浏览器扩展程序友好,则可以为您的本地存储名称添加应用标识符前缀,然后仅删除带有前缀的名称。
  • 用例如下: - 我们有一个名为“Agent Cockpit”的自建应用程序,它与 Application1 共享相同的域名 - 此代理驾驶舱使用本地存储进行某些设置 - 所有这些设置都是当有人在 application1 上单击“注销”时丢失。

标签: javascript local-storage


【解决方案1】:

没有可用于此的本机功能,本地存储设置为域并且不适用于特定的应用程序/虚拟路径。

使用自定义逻辑,即给localstorage key加上应用标识符前缀,清除所有带前缀的item是可能的

【讨论】:

  • 我们注意到,当退出 Application1 时,会提交命令“LocalStorage.clear(),这会删除 LocatStorage 中的所有项目。- 使用带有应用程序标识符的 localstorage 密钥可以防止上述情况。但是我只有权在“Agent Cockpit”应用程序中进行更改。是否有任何文档说明如何实现这一点?或者是否需要为使用本地存储的所有应用程序设置单独的密钥?因为在 application1 中进行更改是目前不可能。我该如何实现?
  • 正如我已经说过的,localStorage.clear() 将清除该域的所有值。所以如果不编辑'Application1',我希望!!,你不能实现这个!
  • 非常感谢哥们!! :) 似乎是本地存储的限制。
  • 我希望这个answer有资格被接受为Answer
猜你喜欢
  • 2016-11-30
  • 2017-10-01
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多