渠道配置里设置了「请求头覆盖」(自定义/非标准认证头,例如 x-api-key、X-Subscription-Key 等)用于鉴权或网关约定。
现象:
- 聊天/补全转发正常(覆盖头生效)。
- 但在渠道界面点击「获取模型列表 / 同步模型」时,上游 /models 接口返回 401/403,模型列表获取失败。
原因:
- 聊天/补全路径 internal/server/biz/channel_llm.go:145 会调用 GetHeaderOverrideOperations() 并应用到 outbound 请求;
- 模型列表探测路径 internal/server/biz/model_fetcher.go FetchModels() 从渠道只读取 Settings.Proxy(约 432-434 行)与凭据,生成请求头时(约 479-511 行)只写入 Authorization / X-Api-Key / X-Goog-Api-Key 等标准头,完全没有读取 Settings.OverrideHeaders 或 Settings.HeaderOverrideOperations。
复现步骤
- 新增一个 OpenAI 兼容渠道,其 /v1/models 需要非标准请求头鉴权(如 x-api-key 而非 Authorization)。
- 在该渠道设置里配置「请求头覆盖」,添加 key=x-api-key, value=。
- 聊天/补全测试通过。
- 到渠道界面点击「获取模型列表」,观察返回 401/403,列表为空。
期望:模型列表探测请求也应应用渠道的「请求头覆盖」,与聊天/补全链路行为一致。
渠道配置里设置了「请求头覆盖」(自定义/非标准认证头,例如 x-api-key、X-Subscription-Key 等)用于鉴权或网关约定。
现象:
原因:
复现步骤
期望:模型列表探测请求也应应用渠道的「请求头覆盖」,与聊天/补全链路行为一致。