session、cookie、Jwt-token

cookie:

cookie是服务器发送到用户浏览器并保存的小型文本数据,浏览器会在后续请求中自动携带这些数据给同一个服务器。

它的样子:

HTTP响应头中设置Cookie

Set-Cookie: session_id=abc123; Path=/; Max-Age=3600; HttpOnly

浏览器下次请求时自动带上

Cookie: session_id=abc123; theme=dark

cookie的创建过程:

首先是用户访问网站,然后服务器响应时设置cookie,浏览器再保存cookie,用户再次访问的时候会自动带上cookie,服务器会通过读取cookie识别用户。

cookie的属性和参数:

|----------------|---------|-------------------------|
| 属性 | 说明 | 示例 |
| Name/Value | 名称和值 | username=张三 |
| Domain​ | 生效域名 | .example.com(子域名共享) |
| ​Path | 生效路径 | /admin(仅/admin路径下有效) |
| Expires/MaxAge | 过期时间 | MaxAge=86400(1天) |
| HttpOnly | 禁止JS访问 | 防XSS攻击 |
| Secure | 仅Http传输 | 防止中间人窃取 |
| SameSite | 跨站限制 | 防CSRF攻击 |

session:

Session是服务器端的用户状态存储机制 。服务器为每个用户创建一个唯一的Session,但Session ID通常通过Cookie传递给客户端

工作原理:

用户登录,服务器创建session,生成唯一ID,Session ID通过Cookie发送给浏览器,浏览器保存Session ID,下次请求自动带上Session ID,服务器用Session ID查找对应的Session数据。

Token:

Token是自包含的、可验证的身份凭证 ,通常是JSON格式,经过数字签名,服务器不需要存储会话状态

JWT(JSON Web Token)结构:
Go 复制代码
Header.Payload.Signature

实际的Token示例:

Go 复制代码
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.           # Header
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.  # Payload
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c     # Signature
JWT工作流程:

用户登录,服务器验证凭证,生成JWT Token(包含用户信息和签名),返回Token给客户端,客户端存储Token(LocalStorage/Cookie),每次请求在Authorization头中携带Token,服务器验证签名,提取用户信息,返回响应。

相关推荐
还是鼠鼠12 小时前
AI掘金头条新闻系统 (Toutiao News)-用户注册-生成Token
后端·python·mysql·fastapi·web
自珍JAVA18 小时前
访问者模式:让你的代码优雅地“拜访”对象结构
后端
吃好睡好便好19 小时前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
TechWayfarer19 小时前
查询IP所在地的3种方案:从API到离线库,风控场景怎么选?
开发语言·网络·python·网络协议·tcp/ip
摇滚侠19 小时前
Java 零基础全套教程,集合框架,笔记 153-163
java·开发语言·笔记
程序员榴莲20 小时前
Python 单例模式
开发语言·python·单例模式
L、21820 小时前
CANN算子开发调试实战:从“Segmentation Fault“到定位根因的完整流程
java·开发语言
毅航20 小时前
AI 浪潮下,会用工具不等于具备能力
后端·程序员·ai编程
狗凯之家源码网21 小时前
基于PHP的多语言跨境电商B2B2C商城系统技术解析
开发语言·php
比特森林探险记21 小时前
go 语言中的context 解读和用法
开发语言·后端·golang