1.基础用法
1 | from fastapi import FastAPI, Response |
- 通过路径操作函数声明
Response参数设置Cookie - 使用
response.set_cookie()方法添加Cookie - 请求处理流程:
graph TD A[客户端请求] --> B[创建Response对象] B --> C[执行set_cookie方法] C --> D[返回响应] D --> E[浏览器存储Cookie]
2.直接返回响应对象
1 | from fastapi.responses import JSONResponse |
- 直接返回
JSONResponse等响应对象实例 - 适用场景:需要完全控制响应内容时
- 特点:
- 绕过自动响应模型过滤
- 必须手动保证响应数据格式正确性
3.Cookie参数详解
3.1 核心参数配置
1 | response.set_cookie( |
- 安全参数说明:
secure=True:生产环境强制启用httponly=True:防御XSS攻击samesite="strict":防止CSRF攻击
3.2 依赖项统一配置
1 | from fastapi import Depends |
- 通过依赖项实现全局Cookie设置
- 优势:复用配置逻辑,保持代码整洁
4.生产环境建议
- 会话管理:
- 使用JWT等加密令牌替代明文存储敏感信息
- 设置
max_age控制会话有效期(建议不超过24小时)
- 安全加固:
1
2
3
4
5
6response.set_cookie(
secure=True,
httponly=True,
samesite="lax",
domain=".yourdomain.com"
) - 性能优化:
- 避免单个响应设置过多Cookie(浏览器限制50+个)
- 使用
__Host-前缀增强Cookie安全性(仅HTTPS+根路径)
- 调试技巧:
- 通过浏览器开发者工具检查Cookie属性
- 使用
curl -b参数测试Cookie携带效果
测试命令示例:
1
2
3
4
5 # 测试基础Cookie设置
curl -i http://localhost:8000/cookie-demo
# 测试安全Cookie
curl -k --http2 -H "Cookie: secure_cookie=encrypted_data" https://api.example.com/data