命名空间HTML 5本地存储密钥

时间:2010-11-04 20:27:11

标签: html5 namespaces key local-storage

我正在使用HTML 5本地存储API来存储用户的访问令牌。然后,请求会附加此令牌以访问我的服务器端API。我想知道我是否需要命名我使用的键。浏览器是否会处理此问题,还是需要将密钥称为“my-awesome-app-token”?我注意到Twitter为一些搜索参数做了这个。

顺便说一句,我知道将令牌存储在那里并不安全,但安全性在这里并不重要,问题是关于命名空间键。

谢谢!

4 个答案:

答案 0 :(得分:14)

浏览器会处理它:

http://dev.w3.org/html5/webstorage/#dom-localstorage

  

用户代理必须具有一组本地存储区域,每个区域对应一个源。

答案 1 :(得分:4)

不,你不需要这样做,每个子域都有一个localStorage。

答案 2 :(得分:4)

我发现到目前为止,关于这个问题的每个答案都告诉你,你不需要"命名空间"你的本地存储密钥。我不太确定这是对的。

假设您开发了一个应用程序,并且需要运行该应用程序的多个实例。这可以是测试和生产系统,也可以是多个测试系统。无论如何,如果这些应用程序在相同的协议/服务器/端口上运行,但具有不同的URL,则它们将可以访问相同的本地存储。

如果您的密钥使用任何其他开发人员可能使用的名称,例如" user"," data"," cache",您最终可能会从以下位置读取localstorage另一个应用程序。如果该应用程序在同一台服务器上运行。

可以肯定的是,如果你想在同一台服务器上运行多个实例,你可能不会在你的密钥上使用app-prefix,也可能使用app-id。

如果我误解了localstorage的工作方式,请纠正我。

答案 3 :(得分:1)

其他答案解决了跨应用程序命名空间,但在同一应用程序使用的不同库的情况下,命名空间也很重要。如果您正在开发这样的库,那么它可能会尊重其他库开发人员(甚至您未来的自己)来命名库的存储使用。

今晚我遇到的一个例子是使用存储密钥nonce。如果多个库都尝试在同一个应用中使用nonce,则会出现问题。如果您正在开发供其他开发人员使用的库,那么最好提供一个前缀选项:myapilib_ + nonce