1.基础用法
1 | from fastapi import FastAPI, Response |
- 两种设置方式对比:
graph TD A[客户端请求] --> B{设置方式} B -->|Response参数| C[创建临时响应对象] B -->|直接返回| D[构建完整响应对象] C --> E[修改headers字典] D --> F[传递headers参数] E & F --> G[返回最终响应]
2.进阶配置
2.1 自定义专有头部
1 | response.headers["X-API-Version"] = "v2.3.1" # 符合X-前缀规范 |
- 浏览器可见性要求:需在CORS配置中添加
expose_headers参数 - 安全规范建议:
- 敏感头信息使用HTTPS传输(
secure=True) - 设置
httponly=True防止XSS攻击
- 敏感头信息使用HTTPS传输(
2.2 组合配置技巧
1 |
|
- 推荐安全头部组合:
- HSTS强制HTTPS
- CSP内容安全策略
- X-Content-Type-Options防MIME嗅探
3.技术细节
3.1 框架实现原理
fastapi.Response本质继承自starlette.responses.Response- 响应处理流程:
- 路径函数返回原始数据
- 通过
jsonable_encoder序列化 - 合并临时响应对象中的headers
3.2 响应类型扩展
1 | from starlette.responses import Response # 支持原生Starlette响应 |
- 兼容性说明:
- 所有Starlette响应类型可直接使用
- FastAPI额外提供
ORJSONResponse等优化类型
测试命令示例:
1 curl -i http://localhost:8000/headers-and-object/