cookie session webStorage
cookie
Cookie指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。 cookie是服务端生成,客户端进行维护和存储。通过cookie,可以让服务器知道请求是来源哪个客户端,就可以进行客户端状态的维护,比如登陆后刷新,请求头就会携带登陆时response header中的set-cookie,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。
session
服务器通过cookie给用户一个sessionId,sessionId对应服务器里面的一小块内存,每次用户访问服务器的时候,服务器就通过sessionId去读取相应的session来得到用户的隐私信息。
sessionId是个随机数,所以不能被用户修改。
ps:(据后端的同事讲,现在都用微服务,用token)
webStorage
不是服务端生成的,大小为5MB左右(会因浏览器的不同而有所差别),通过浏览器自身提供的API window.localStorage和window.sessionStorage实现
Cookie 和 Session 的区别
一般来说,Session 基于 Cookie 来实现。
Cookie
- 服务器通过 Set-Cookie 头给客户端一串字符串
- 客户端每次访问相同域名的网页时,必须带上这段字符串
- 客户端要在一段时间内保存这个Cookie
- Cookie 默认在用户关闭页面后就失效,后台代码可以任意设置 Cookie 的过期时间
- 大小大概在 4kb 以内
Session
- 将 SessionID(随机数)通过 Cookie 发给客户端
- 客户端访问服务器时,服务器读取 SessionID
- 服务器有一块内存(哈希表)保存了所有 session
- 通过 SessionID 我们可以得到对应用户的隐私信息,如 id、email
- 这块内存(哈希表)就是服务器上的所有 session
Cookie 和 webStorage 的区别
webStorage:html5提供的API,存在Windows用户的c盘的一个文件里,在没有webStorage之前,所有的变量在页面刷新之前都全部销毁,cookie会被带到服务器上去,webStorage不会。
LocalStorage
- LocalStorage 跟 HTTP 无关
- HTTP 不会带上 LocalStorage 的值
- 只有相同域名的页面才能互相读取 LocalStorage(没有同源那么严格)
- 每个域名 localStorage 最大存储量为 5Mb 左右(每个浏览器不一样)
- 常用场景:不是很重要的全局信息(不能记录密码)
- LocalStorage 永久有效,除非用户清理缓存,essionStorage 在用户关闭页面(会话结束)后就失效