调用AWS Gateway API时Postman、浏览器正常但代码报Type Error: failed to fetch的原因
调用AWS Gateway API报
Type Error: failed to fetch的核心诱因 以下是按出现概率从高到低排序的原因:
- CORS配置错误
这是该场景下最高发的问题。Postman、浏览器直接输入URL访问API的场景不会触发跨域预检(OPTIONS)请求,无需通过CORS校验;但前端代码中调用XMLHttpRequest、fetch、axios等客户端请求工具时,只要请求源和API域名、协议、端口任意一项不一致,就会触发跨域校验。如果AWS API Gateway侧没有配置对应请求源的CORS允许规则,或者没有放行自定义请求头、非简单请求方法,浏览器就会拦截请求,抛出fetch失败错误。 - 混合内容拦截
如果你的代码运行在HTTPS协议的页面下,但是调用的AWS Gateway API端点是HTTP协议,浏览器会默认拦截这类不安全的混合内容请求,Postman和直接访问HTTP协议的API地址时不会触发该限制。 - 请求配置不匹配
- fetch方法的配置参数错误:比如设置
mode: "no-cors"但尝试读取响应体,或者credentials配置和API侧的身份校验要求冲突 - 传输的请求头、请求方法不符合API Gateway的配置规则,触发4xx错误导致请求中断
- fetch方法的配置参数错误:比如设置
- 环境拦截规则
- 浏览器安装的广告拦截、代理、隐私防护类插件,主动拦截了API请求,Postman走独立网络链路不会被该类插件影响
- 如果是Node.js环境下调用报错,大概率是API使用的SSL证书不被Node.js默认信任(比如自签证书、测试证书),而Postman/浏览器配置了证书信任规则或开启了忽略证书错误选项
错误原文:Type Error: failed to fetch
内容的提问来源于stack exchange,提问作者DanielSon
相关产品推荐
相关产品推荐

