Cookie Session Token

存储位置:

客户端(浏览器)中的 Cookie。
工作原理:

登录:用户提交登录表单,服务器验证凭证(如用户名和密码 )。

设置 Cookie:服务器在响应中设置一个包含会话 ID 的 Cookie。

验证请求:浏览器在后续请求中自动包含这个 Cookie,服务器根据会话 ID 验证用户身份。

登出:用户请求登出,服务器销毁会话,并删除 Cookie。

缺点:

对于跨域请求,配置比较复杂(需要设置 CORS)。

易受 XSS 攻击,需要设置 HttpOnly 和 Secure 标志提高安全性。

Session (会话)

存储位置:

服务器端

复制代码
Session是存储于服务器端的特殊对象,
服务器会为每一个游览器(客户端)创建一个唯一的session。
这个session是服务器端共享,每个游览器(客户端)独享的。

在HTTP请求中往往会携带一个cookie,这个cookie的名字是JSESSIONID这个JSESSIONID表示的就是session的id,这个是由服务器创建的,并且是唯一的。服务器在使用session时,会根据JSESSIONID来进行不同操作。

工作原理:

登录:用户提交登录表单,服务器验证凭证。

创建会话:服务器创建一个新的会话,分配唯一的 Session ID ,存储在服务器端的会话存储中。

设置 Cookie:服务器在响应中设置包含 Session ID 的 Cookie。

验证请求:浏览器在后续请求中自动包含这个 Cookie,服务器根据 Session ID 验证用户身份

登出:用户请求登出,服务器销毁会话,并删除 Cookie。

优点:

数据存储在服务器端,更安全。

能存储复杂和大量的数据。

缺点:

需要服务器资源,可能影响性能。
跨服务器的会话管理比较复杂,需要使用分布式会话管理方案。

Token(令牌)

Token是"令牌"的意思。

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。

当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

存储位置:

客户端,通常在 HTTP 头、LocalStorage 或 SessionStorage 中。

工作原理:

登录:用户提交登录表单,服务器验证凭证。

生成令牌:服务器生成一个加密的令牌(如 JWT) ,包含用户身份信息和有效期限。

返回令牌:服务器在响应中返回令牌,客户端存储令牌。

验证请求:客户端在后续请求中将令牌包含在 HTTP 头中,服务器验证令牌的有效性和签名。

刷新令牌:令牌过期时,客户端可以使用刷新令牌机制获取新的令牌。

优点:

无状态,易于扩展和跨服务器共享。

可以使用 JSON Web Token(JWT)标准,便于传输和解析。

缺点:

需要正确实现加密和签名,避免安全漏洞。

令牌泄露后可能导致安全风险,需要有效的令牌失效机制。

示例:

复制代码
POST /login
Content-Type: application/json

{
  "username": "user",
  "password": "password"
}

HTTP/1.1 200 OK
Content-Type: application/json

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

GET /protected
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

总结对比

Cookie:使用简单,但安全性较低,适合小规模应用。

Session:安全性高,适合复杂应用,但需要管理服务器资源和会话存储。

Token:无状态、可扩展,适合分布式系统和跨域请求,但需要处理加密和令牌管理。

相关推荐
2401_841495641 小时前
【数据结构】基于Prim算法的最小生成树
java·数据结构·c++·python·算法·最小生成树·prim
数据村的古老师4 小时前
Python数据分析实战:基于25年黄金价格数据的特征提取与算法应用【数据集可下载】
开发语言·python·数据分析
小王不爱笑1325 小时前
Java 核心知识点查漏补缺(一)
java·开发语言·python
闲人编程6 小时前
自动化文件管理:分类、重命名和备份
python·microsoft·分类·自动化·备份·重命名·自动化文件分类
Jonathan Star7 小时前
用Python轻松提取视频音频并去除静音片段
开发语言·python·音视频
刘火锅8 小时前
Java 17 环境下 EasyPoi 反射访问异常分析与解决方案(ExcelImportUtil.importExcelMore)
java·开发语言·python
Hi202402179 小时前
Qt+Qml客户端和Python服务端的网络通信原型
开发语言·python·qt·ui·网络通信·qml
程序员大雄学编程10 小时前
「用Python来学微积分」16. 导数问题举例
开发语言·python·数学·微积分
B站_计算机毕业设计之家10 小时前
预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
python·算法·机器学习·数据分析·flask·股票·预测
yj155811 小时前
装修中怎样避坑
python