1.基础用法
1 | from fastapi import FastAPI |
- 使用
CORSMiddleware中间件处理跨域请求 - 通过
allow_origins配置允许的源列表,支持具体域名或通配符* - 请求流程:
graph TD A[浏览器发送OPTIONS预检请求] --> B{源是否允许?} B -->|是| C[返回CORS响应头] C --> D[发送实际请求] B -->|否| E[拒绝请求]
2.配置参数详解
核心参数:
allow_origins:允许的源列表(如["http://example.org"]),默认仅允许同源allow_origin_regex:使用正则匹配允许的源(如"https://.*\.example\.org")allow_methods:允许的HTTP方法,默认仅允许GET请求allow_headers:允许的请求头,默认仅支持基础头(Content-Type等)allow_credentials:是否允许携带Cookie/授权头(需显式指定源)expose_headers:允许浏览器访问的响应头max_age:预检请求缓存时间(秒),默认600秒
生产环境建议:
- 避免使用
allow_origins=["*"],显式指定可信源 - 限制
allow_methods为必要方法(如GET/POST) - 使用
allow_origin_regex代替通配符提升安全性
3.注意事项
- 通配符限制:使用
*时无法携带凭证(如Cookie/Token) - 预检请求:浏览器自动发送OPTIONS请求验证CORS配置
- 中间件顺序:CORSMiddleware应在其他中间件之前注册
- HTTPS要求:生产环境必须启用HTTPS保护敏感数据
- 错误处理:无效CORS配置会触发浏览器控制台警告
测试命令示例:
1 curl -X OPTIONS -H "Origin: http://localhost:8080" http://localhost:8000/