JavaScript知识
浏览器存储
特性 | cookie | localStorage | sessionStorage | indexDB |
---|---|---|---|---|
数据生命周期 | 一般由服务器生成,可以设置过期时间 | 除非被清理,否则一直存在 | 页面关闭就清理 | 除非被清理,否则一直存在 |
数据存储大小 | 4K | 5M | 5M | 无限 |
与服务端通信 | 每次都会携带在header 中,对于请求性能影响 | 不参与 | 不参与 | 不参与 |
cookie与session
cookie保存在客户端(浏览器);session保存在服务端(redis)
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。
例子:
当客户端第一次请求登录服务器的时候,服务器随机下发一个字符串sessionId给浏览器,以cookie的形式保存在客户端。当下次登录的时候会带上这个cookie,从而识别你是谁。
1.cookie的优点:
- ➀.极高的扩展性和可用性
- ➁.通过良好的编程,控制保存在cookie中的session对象的大小。
- ➂.通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
- ➃.只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
- ➄.控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
2.cookie的缺点:
- ➀.cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
- ➁.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
- ➂.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。