部署在Cloud Run的FastAPI POST请求被重定向至HTTP问题
问题解决:Cloud Run上FastAPI的POST请求被重定向到HTTP资源
核心解决方案:移除请求URL末尾的斜杠,将请求地址从https://xxxx.run.app/plan/改为https://xxxx.run.app/plan。
原因说明
FastAPI基于Starlette框架,默认会对带末尾斜杠的路径执行重定向(比如/plan/会被重定向到/plan)。而Cloud Run的负载均衡在处理这类重定向时,会错误地将HTTPS请求转换为HTTP协议,导致浏览器触发**混合内容(Mixed Content)**安全限制——当前页面通过HTTPS加载,浏览器不允许发起HTTP资源请求,因此请求被拦截。
对应用户场景的验证
- curl请求正常是因为curl默认会自动跟随重定向,并在重定向过程中保持HTTPS协议;
- 浏览器的fetch请求则严格遵循安全规则,直接阻止协议降级的请求,因此出现报错。
额外说明
你的CORS配置和no-cors模式并非问题根源,无需调整。只需修正URL的末尾斜杠即可解决重定向导致的协议错误。
内容的提问来源于stack exchange,提问作者wonglik
相关产品推荐
相关产品推荐

