现象
使用Docker-Compose部署的FastGPT私有部署版本4.6.8,在高级编排功能的HTTP模块中调用GET类型的API请求(如Google Custom Search API、TMDB API)时,返回Request failed with status code 403错误。相同的请求在其他软件中可正常获取JSON响应,报错信息包含AxiosError,错误堆栈指向axios请求处理流程。
可能原因
- FastGPT高级编排的HTTP模块自动为请求添加了额外的请求头,与目标API的校验规则冲突。例如GET请求默认携带的Content-Type请求头,部分API不允许无请求体的GET请求携带该头。
- 目标API对请求来源存在额外校验,FastGPT的部署环境IP未被目标API允许访问。
- 请求中的认证信息格式或传递方式未被目标API识别。
排查步骤
- 复制FastGPT HTTP模块中的完整请求URL、所有请求头、请求参数,在外部工具中复刻该请求,验证是否触发403错误。
- 对比外部工具正常调用该API时的请求头,检查FastGPT模块中是否存在额外或不符合要求的请求头字段。
- 确认请求中的认证信息格式与目标API的官方要求完全一致。
- 检查FastGPT部署环境的网络出口是否可以正常访问目标API的域名。
解决与验证
- 若发现请求头存在冲突,例如GET请求携带了Content-Type头,可在FastGPT的HTTP模块中手动覆盖该请求头,将其移除或调整为目标API允许的格式。
- 若为目标API的访问限制问题,需联系目标API的服务提供商,将FastGPT部署环境的出口IP添加至访问白名单。
- 完成调整后,重新在FastGPT的HTTP模块中发起请求,验证不再返回403错误,可正常获取目标JSON响应。