这是一篇关于Cookie和Session还有LocalStorage和SessionStorage的总结的博客。
demo展示在:https://github.com/o0Chivas0o/demo/tree/master/node-demo/sign-up-demo 功能做的不是很完善,但是能帮助理解Cookie以及Session。
Cookie
Cookie
有几个特点,
- 服务端通过
Set-Cookie
来设置Cookie,Cookie的本质就是一串字符串。 - 客户端得到这个字符串后,每次登陆这个网页,都会携带上这串字符串。
- 服务端再通过这串字符串去找到对应的隐私信息。
- Cookie大小一般为4kb。
- Cookie默认有失效时间,但是后台可以设置过期时间。
因为Cookie
可以篡改,而且是明文传输的,所以存在漏洞,Session
就解决了这个问题。
Session
Session
的特点,
- 一般来说,Session是基于Cookie来设置的一个哈希表。
- 将SessionId(随机数)通过Cookie发给服务端。
- 客户端访问服务器时,服务器读取SessionID。
- 服务器有一块内存(哈希表),存储了所有的Session。
- 通过SessionID,我们可以得到用户的隐私信息。
- 这块内存(哈希表)就是服务器上所有的Session。
LocalStorage
LocalStorage
的实质也是一个hash
,它是html5标准提供的一个API,用来持久化存储一些不是那么重要的信息。
它的特点,
- LocalStorage与HTTP无关。
- HTTP不会带上LocalStorage。
- 只有相同的页面才能互相读取LocalStorage。
- 浏览器对每个域名分配的LocalStorage最大的存储量为5Mb左右。
- 记录一些无关紧要的信息,不记录用户敏感信息。
- LocalStorage永久有效,除非用户清理缓存。
它与Cookie的区别就是,一个通过Set-Cookie
设置,一个是HTML5提供的APi,
一个是通过HTTP设置,一个与HTTP无关。
SessionStorage(会话窗口)
SessionStorage
与Session
无关,同样,它也是浏览器提供的一个API。
它与LocalStorage
一样,只有一点不一样,就是它的存储时间在用户关闭页面之后就会失效。
cache-control(缓存管理)
可以通过在服务器设置Cache-Control
来设置缓存时间,从而提高网页加载速度,提供更好的用户体验。
__END__
文章出处:Cookie、Session、LocalStorage
作者签名:Rich ? DoSomethingLike() : DoSomethingNeed()
版权声明:文章除特别声明外,均采用 BY-NC-SA 许可协议,转载请注明出处