Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 2.27 KB

0302.md

File metadata and controls

34 lines (24 loc) · 2.27 KB

cookie, session, token, JWT

cookie是第一次请求,服务器通过Set-Cookie创建存储在浏览器中,发送给服务端,在请求中来回携带。

  • 有过期时间,请求头中 set-Cookie可以设置()通过键值对的形式。
  • 存储大小有限制。(4kb)。
  • cookie不能跨域访问。
  • Cookie 只支持存字符串数据,session可以存任意类型。
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: X-BAT-FullTicketId=TGT-969171-******; path=/; samesite=none; httponly

[page content]

session是服务端端一次创建,存在服务端数据库或者缓存中,服务端会将sessionId放到cookie中,传给浏览器。

  • 用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session。
  • 请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器。
  • 浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名。
  • 当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作

token

  • 每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里。
  • 基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库。
  • 作为身份认证 Token 安全性比 Session 好,因为每一个请求都有签名还能防止监听以及重放攻击,而 Session 就必须依赖链路层来保障通讯安全了。

JWT (JSON Web Token)

  • 将 Token 和 Payload 加密后存储于客户端,服务端只需要使用密钥解密进行校验(校验也是 JWT 自己实现的)即可,不需要查询或者减少查询数据库,因为 JWT 自包含了用户信息和加密的数据。