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)结构:
Header.Payload.Signature
实际的Token示例:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. # Header
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. # Payload
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c # Signature
JWT工作流程:
用户登录,服务器验证凭证,生成JWT Token(包含用户信息和签名),返回Token给客户端,客户端存储Token(LocalStorage/Cookie),每次请求在Authorization头中携带Token,服务器验证签名,提取用户信息,返回响应。
更多推荐



所有评论(0)