1.Cookie
- 服务器通过 Set-Cookie 头给客户端一串字符串
- 客户端每次访问相同域名的网页时,必须带上这段字符串
- 客户端要在一段时间内保存这个Cookie
Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间- 大小大概在 4kb 以内
Cookie 存在的问题用户可以随意篡改 Cookie2.Session(不翻译)
- 将 SessionID(随机数)通过 Cookie 发给客户端
- 客户端访问服务器时,服务器读取 SessionID
- 服务器有一块内存(哈希表)保存了所有 session
- 通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email
- 这块内存(哈希表)就是服务器上的所有 session
Session 可以用 LocalStorage + 查询参数实现3.LocalStorage
- LocalStorage 跟 HTTP 无关
- HTTP 不会带上 LocalStorage 的值
- 只有相同域名的页面才能互相读取 LocalStorage(没有同源那么严格)
- 每个域名 localStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
- 常用场景:记录有没有提示过用户(没有用的信息,不能记录密码)
LocalStorage 永久有效,除非用户清理缓存4.SessionStorage(会话存储)
- SessionStorage 跟 HTTP 无关
- HTTP 不会带上 SessionStorage 的值
- 只有相同域名的页面才能互相读取 SessionStorage(没有同源那么严格)
- 每个域名SessionStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
SessionStorage 在用户关闭页面(会话结束)后就失效。
5.Session 与 Cookie 的关系
一般来说,Session 基于 Cookie 来实现。
6.Cookie 和 Session 的区别
- Cookie 保存在客户端,每次都随请求发送给 Server
- Session 保存在 Server 的内存里,其 Session ID 是通过 Cookie 发送给客户端的
7.Cookie 和 LocalStorage 的区别
- LocalStorage 不会随 HTTP 发给 Server
- LocalStorage 的大小限制比 Cookie 大多了
8.LocalStorage 和 SessionStorage 的区别
一个不会自动过期, LocalStorage 永久有效,除非用户清理缓存一个会自动过期。SessionStorage 在用户关闭页面(会话结束)后就失效。
总结:
- cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
- cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
- sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:
- cookie数据大小不能超过4k。
- sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
有期时间:
- localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
- sessionStorage 数据在当前浏览器窗口关闭后自动删除。
- cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭