故障排查GitHub issue2 分钟阅读排错/错误码

解决FastGPT传递阿里云OSS文件链接时的403报错问题

FastGPT版本v4.12.2中,通过/api/v1/chat/completions接口传递阿里云OSS私有读签名链接以调用大模型识别文件时,返回403错误。

现象

FastGPT版本v4.12.2中,通过/api/v1/chat/completions接口传递阿里云OSS私有读签名链接以调用大模型识别文件时,返回403错误。报错信息包含"message": "Request failed with status code 403""method": "head",请求对象为OSS带签名链接。大模型直接识别该链接无异常,问题仅出在FastGPT链路中。若使用HEAD类型签名链接,可通过前置校验但后续模型读取GET签名链接时会触发400错误,报错信息包含"message": '400 <400> InternalError.Algo.InvalidParameter: Failed to download multimodal content'

可能原因

FastGPT内部在处理文件链接时,默认使用HEAD请求校验资源。阿里云OSS私有读签名链接需匹配请求方法,HEAD与GET签名不兼容,导致权限校验失败,返回403错误。

排查步骤

  1. 确认FastGPT版本为v4.12.2,检查调用的接口为/api/v1/chat/completions
  2. 查看报错日志,确认AxiosError的method为head,状态码403,请求对象为OSS带签名链接。
  3. 核对阿里云OSS签名链接的请求方法,区分HEAD与GET类型签名的差异。
  4. 验证直接调用大模型识别该链接无异常,确认问题出在FastGPT链路中。

解决与验证

  1. 生成匹配HEAD请求方法的阿里云OSS私有读签名链接,适配FastGPT的前置校验逻辑。
  2. 重新调用/api/v1/chat/completions接口,验证403报错是否消除。
  3. 若后续出现400错误,需按实际环境调整OSS签名链接的请求方法,确保与大模型读取要求一致。

来源: FastGPT GitHub issue #7602