🥇 Cookie、localStorage、以及 sessionStorage 之间的区别

🥈 cookie

由于 HTTP 是一种无状态的协议,服务器单从网络连接上是无法知道客户身份的。这时候服务器就需要给客户端颁发一个 cookie,用来确认用户的身份。
cookie 就是客户端保存用户信息的一种机制,用来记录用户的一些信息

🥈 localStorage

localStorage 生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。

🥈 sessionStorage

sessionStorage 的有效期是页面会话持续,如果页面会话(session)结束(关闭窗口或标签页),sessionStorage 就会消失。而 localStorage 则会一直存在。
webstorage 是本地存储,存储在客户端,包括 localstorage 和 sessionstorage。
localStorage 生命周期是永久的,除非被清除,否则永久保存,而 sessionStorage 仅在当前会话下有效,关闭页面或浏览器后被清除

🥇 cookie session token 区别

🥈 HTTP协议

支持客户/服务器模式。
简单快速:客户向服务器请求服务时,只需要传送请求方法和路径,请求方法常用的有GET、POST、PUT、DELETE。每种方法规定了客户与服务器联系的类型不同。
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Conetent-Type加以标记。
无连接:无连接的含义是限制每次练级只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间(HTTP1.1开始支持长连接,需要服务端配置对应的参数)
无状态:HTTP协议是无状态协议。无状态是指协议对事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量偏大。另一方面,在服务器不需要先前信息时它的应答就较快。

🥈 cookie

cookie是客户端保存数据的一种机制
会话 cookie

  1. 1. 保存在浏览器内存中,浏览器关闭后就消失了

持久化 cookie

  1. 1. 保存在本地磁盘上,一般会有一定的过期时间

🥈 session

session 是服务端保存数据的一种机制,用户的一些关键信息会保存在session中

  1. 1. session 保存在服务端内存中
  2. 2. 每个用户对应一个独立的session,服务端会存储很多session
  3. 3. 每个session 都有自己的唯一id
  4. 4. session 都有过期时间,如果一定时间内没有更新数据,就会消失

🥈 token

token 是一种验证客户端身份的机制

  1. 1. 客户端认证成功后,服务端返回token值,客户端需自己保存这个token
  2. 2. 服务端将token单独存储
  3. 3. token一般都是加密的
  4. 4. 特点:无状态、可扩展;跨程序、跨域调用;安全

🥈 cookie、session、token的区别

cookie 是一种数据存储机制,可以存储任何数据,一般是以文件存储,不支持跨域
session 是服务端的一个数据存储机制,可以存储任何数据,以内存存储,不支持跨域
token 是一种认证机制,是一个经过加密之后的字符串,支持跨域
token 也可以以 cookie 的形式存储在客户端

🥈 cookie 和 token 都存放在 header 中,为什么不会劫持 token?

首先 token 不是防止 XSS 的,而是为了防止 CSRF 的;
CSRF 攻击的原因是浏览器会自动带上 cookie,而浏览器不会自动带上token