WEB Storage

来源:互联网 发布:宏晶单片机官网 编辑:程序博客网 时间:2024/04/25 15:51

目前标准的有sessionStorage和localStorage。

sessionStorage

在浏览器打开期间,页面会话是持续存在的,哪怕页面重新加载(reload)或页面还原(restore)。只要是同一个站点的页面,不管打开多少个窗口,它们之间都共享同一个sessionStorage。

之所以有sessionStorage,是因为cookie在session数据存储方面做的不到位,因为当两个交易在相同页面两个不同浏览器同时进行时,很容易导致其中一个被忽略或覆盖,而且没有任何通知,而其实两个交易可能都成功了,而用户只看到了一个。而sessionStorage在每个数据改变时会派发一个storage事件出来,这个事件包括原来的值和新的值,监听该事件可以避免上面类似的问题发生。

这个对象适合保存临时数据,因为如果浏览器一旦正常关闭这些数据也就被清除了。

获取和存储数据也是非常简单,直接操作sessionStorage即可:

//Save data to a the current session's store

sessionStorage.setItem("username","John");

 

// Access some storeddata

alert( "username= " + sessionStorage.getItem("username"));

 

// Remove data from the current session's store

sessionStorage.removeItem("username");

 

 

// Removeall data from session'sstore

sessionStorage.clear();

localStorage

这个对象和sessionStorage的规则是一样的,只是它存储的数据是持久性的。同一个站点的页面共用同一个localStorage,不同站点使用不同的localStorage。

在秘密浏览模式下,会有一个临时数据库用来存储local存储数据,当秘密浏览模式关闭,这些数据就会被清空。

localStorage与cookie的区别在于,存储在localStorage中的数据不需要每次和请求一起传输。

 

如何缓解用户信息被追踪的问题

阻止第三方存储

比如,防止iframe中那些不同域的页面不能访问localStorage的API。

自动使数据过期

用户代理可以让用户自己设置多久那些数据应该被清空。

把持久化数据当成cookie

当用户想清空cookie时,存储在localstorage中的数据并没有被删除。用户代理应该提供一种方式,即它和cookie可以同时被清空。

建立黑白名单

白名单中的可以无限访问localstorage,而黑名单中的站点不能访问localestorage。