查看平台级认证概览:/cn/api/authentication
身份验证
Shannon Gateway 支持对所有受保护端点的 API 密钥认证。API 密钥认证
在X-API-Key 请求头中包含您的 API 密钥:
认证错误
401 未授权 - 缺少或无效的 API 密钥:- 缺少
X-API-Key请求头 - 无效的 API 密钥格式
- 禁用的或过期的 API 密钥
- 错误的认证端点
请求头
必需请求头
X-API-Key
用途:身份验证 必需:是(除非GATEWAY_SKIP_AUTH=1)
格式:字符串
Content-Type(POST 请求)
用途:指定请求体格式 必需:POST 请求需要 格式:application/json
可选请求头
Idempotency-Key
用途:防止重复任务提交 必需:否(推荐用于关键操作) 格式:UUID 或唯一字符串 缓存持续时间:24 小时traceparent
用途:W3C 分布式追踪 必需:否(推荐用于可观测性) 格式:{version}-{trace-id}-{parent-id}-{flags}
- version:
00(当前版本) - trace-id:32 个十六进制字符(128 位)
- parent-id:16 个十六进制字符(64 位)
- flags:2 个十六进制字符(采样:
01,未采样:00)
tracestate
用途:供应商特定的追踪上下文 必需:否 格式:逗号分隔的键值对Cache-Control
用途:控制缓存行为 必需:否 格式:标准 HTTP 缓存指令Last-Event-ID (SSE only)
Purpose: Resume SSE stream from a specific event Required: No Format: Event ID string — either a Redis stream ID (e.g.,1700000000000-0) or a numeric sequence (e.g., 42)
响应头
标准响应头
X-Workflow-ID
用途:Temporal 工作流标识符 出现位置:POST /api/v1/tasks、GET /api/v1/tasks/ 格式:字符串(与 task_id 相同)X-Session-ID
用途:多轮对话的会话标识符 出现位置:POST /api/v1/tasks 格式:UUID 字符串Content-Type
用途:响应体格式 出现位置:所有 JSON 响应 格式:application/json
速率限制请求头
X-RateLimit-Limit
用途:每个窗口允许的最大请求数 出现位置:所有认证请求 格式:整数X-RateLimit-Remaining
用途:当前窗口中剩余的请求数 出现位置:所有认证请求 格式:整数X-RateLimit-Reset
用途:速率限制重置的 Unix 时间戳 出现位置:所有认证请求 格式:Unix 时间戳(秒)Retry-After
用途:重试前等待的秒数(429 响应) 出现位置:429 Too Many Requests 响应 格式:整数(秒)CORS 请求头
Access-Control-Allow-Origin
用途:CORS 允许的来源 出现位置:所有响应(开发模式) 格式:域名或*
Access-Control-Allow-Methods
用途:允许的 HTTP 方法 出现位置:CORS 预检响应 格式:逗号分隔的方法Access-Control-Allow-Headers
用途:允许的请求头 出现位置:CORS 预检响应 格式:逗号分隔的请求头请求头示例
最小请求(GET)
完整请求(POST)
Python - 所有请求头
JavaScript - Fetch API
安全最佳实践
1. 保护 API 密钥
永远不要将 API 密钥提交到版本控制:2. 在生产环境中使用 HTTPS
3. 定期轮换 API 密钥
4. 实施密钥过期
5. 监控 API 密钥使用
故障排除
认证失败
问题:收到 401 未授权 解决方案:-
检查是否包含 API 密钥:
-
验证 API 密钥格式:
-
检查是否禁用了认证:
-
在数据库中验证密钥:
速率限制问题
问题:收到 429 Too Many Requests 解决方案:-
检查速率限制请求头:
-
实施指数退避:
-
增加速率限制(如需要):
幂等性问题
问题:创建了重复任务 解决方案:-
始终包含 Idempotency-Key:
-
存储幂等性密钥:
-
检查 Redis 缓存: