Cookie,Seesion和Token区别及用途

Cookie,Seesion和Token区别及用途

简介

Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点。

定义:

  • HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。
  • cookie 存储在客户端:cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。
  • cookie 是不可跨域的:每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的(靠的是 domain)。

使用过程:

Seesion

定义:

  • session 是另一种记录服务器和客户端会话状态的机制
  • session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中

使用过程:

session 认证流程:

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

Token

使用流程(JWT):

JWT 认证流程:

  • 前端发送登录请求,后端进行认证,认证成功后,会创建一个JWT的字符串,包含三段信息。
  • 然后把创建好的JWT返回到前端,前端拿到JWT的token,对token分割拿到第二段,第二段是数据的载体,通过base64的方式解码即可。
  • 登录成功后,后续的请求,只需要在请求头中设置一个跟后端约定的一个属性Authorization:token,然后再把响应的JWT Token传入到后端,后端拿到Token进行解密,验证signature,检验成功信息没有被篡改,即可放行,正常响应。

JWT不需要前后端的存储,只是一个加密的字符串,对于集群和前后端分离的架构来说是非常方便的。

相关推荐
❥ღ Komo·25 分钟前
Ansible Playbook入门指南:核心语法与实战
网络
Σdoughty1 小时前
DNS主从服务
网络
CS_浮鱼2 小时前
【Linux】进程控制
linux·运维·网络
三川6984 小时前
1. 网络编程基础
开发语言·网络
Guheyunyi4 小时前
安全风险监测系统核心技术
运维·网络·人工智能·安全
weixin_307779134 小时前
Amazon VPC中Web应用无法连接数据库的安全组配置问题分析与修复
网络·数据库·安全·云计算·aws
百***78455 小时前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
2301_780789666 小时前
WAF如何应对金融领域的网络威胁和黑客攻击
服务器·网络·安全·web安全·金融
我命由我123456 小时前
Java 开发 - 粘包处理器 - 基于消息头 + 消息体(魔数验证、长度验证)
java·网络·后端·网络协议·java-ee·intellij-idea·intellij idea
小糖学代码6 小时前
网络:5.应用层协议HTTP
网络·网络协议·http