all
You must replace the baseURL in hugo.toml file when deploying, you can manage this announcement from the params.toml file.

Web 本地存储

内容列表

为了达到某些需求,我们通常需要在本地存储一些数据,方便我们进行用户个性化定制服务。

Web 存储

在互联网上,许多网站提供用户注册功能,因为 http 协议是个无状态的协议(无法记录客户端与服务器端状态),所以我们注册登录后每一次跳转网页都需要重新登陆。为了增强用户体验,我们不得不将状态信息保存下来,而 Web 存储技术则实现了该需求。Cookie 最多可在本地存储 4K 数据,出于安全性考虑, Cookie 中并非直接存储的是用户敏感数据(帐号、密码、个人信息等),而是一个状态 ID,该 ID 是服务器端利用 session 存储一个会话状态并分配给客户端用来进行状态识别的。因此,每一次的 http 请求都会带上 Cookie 数据发送给服务器端进行状态识别,从而达到状态保持的目的。

HTML5 Web 本地存储

在以前,我们是通过 Cookie 来实现 Web 本地存储的。不过,HTML5 为我们带来了新的 Web 本地存储功能,即 localStoragesessionStorage,下面我们来简单的分析一下它们各自的特点。

Cookie 相对来说用的时间很长了,技术更加成熟,尤其是这么多年以来在 Web 安全方面也有了很大的进步,在敏感信息存储方面 Cookie 的优势是明显的。而且,Cookie 在同源窗口中是共享的,同时也可以限制在某个路径下;它的有效期也是可以设置的,没有到达有效期前即使关闭浏览器窗口依然是有效的。

相反的,Cookie 的缺点也是明显的,最多只能存储约 4K 大小的数据;而且每次都会伴随同源 http 请求发送给服务器端,很浪费带宽。

localStorage

localStorage 存储的数据量要大得多,大约 5M 左右;它在同源窗口中也是共享的。而且,localStorage 存储数据的时间甚至长达数年(不主动删除,即使浏览器关闭也存在),所以说在开发过程中我们可以使用它来存储更多的数据,并更持久的存储。

sessionStorage

sessionStorage 存储的数据量也要大得多,但它是不能在同源窗口中共享的,也就是说它只允许在同窗口同页面中访问。而且,sessionStorage 存储的数据会在浏览器窗口关闭的时候自动删除,不能实现持久的保存数据。

注意:sessionStorage 在不同的标签页之间无法共享。

结语

就目前来看,HTML5 提供的新的 Web 本地存储方法适合存储一些非敏感数据,对于用户敏感的数据还是依靠 Cookie 来存储更安全一些。而 Web 本地存储是没有绝对安全的,依然面临很严峻的考验。

comments powered by Disqus

相关

JavaScript 异步编程

JavaScript 作为一门在 Web 开发中的主流语言,常常涉及到交互事件方面的应用,这不可避免的用到了异步编程的方法,而它本身则是单线程运行的。在以往的开发中,异步编程正变得越来越难管理,新的 Promise 标准 API 将使得异步编程更加方便、安全。

了解更多

使用 Git

Git 是一个分布式的版本控制工具,类似的版本控制工具还有 SVN ;由于 GitHub 平台的盛行,也使得 git 更加受欢迎,在 Windows 平台使用 git 也是非常方便的。

了解更多

TCP 与 UDP 协议

传输层是网络分层模型中举足轻重的层,它是底层通信子网与高层资源子网的接口与桥梁,提供了面向连接的传输控制协议(Transmission Control Protocol,TCP)和无连接的用户数据报协议(User Datagram Protocol,UDP),负责提供端到端的数据传输服务。

了解更多