Flask中/stripe_hook接口405 Method Not Allowed问题排查求助
Flask /stripe_hook接口405 Method Not Allowed问题解决
问题核心原因
从请求响应日志里的server: AmazonS3、x-cache: Error from cloudfront可以明确:你的请求没有到达Lightsail上的Flask应用,而是被AWS Amplify的静态资源托管服务(底层基于S3)拦截了。S3默认仅允许静态资源的HEAD/GET/DELETE/PUT请求,不支持POST方法,因此返回405错误。
其他/api/*接口正常,是因为Amplify已配置对应路径的转发规则,将请求导向Lightsail后端,但/stripe_hook不在转发规则范围内,被当成静态资源路径处理。
解决方案
- 登录AWS Amplify控制台,找到你的应用,进入重写与重定向设置页面。
- 添加一条新的转发规则,确保
/stripe_hook路径被转发到Lightsail后端:- 源地址:
^/stripe_hook$(正则匹配精确路径) - 目标地址:
https://你的Lightsail服务器公网域名/stripe_hook - 类型选择:
200 (Rewrite)
- 源地址:
- 调整规则优先级,让这条规则排在默认的静态资源匹配规则之前(Amplify规则按从上到下顺序执行)。
额外验证步骤
- 用Stripe CLI测试后端接口本身是否正常:
如果能正常接收事件,说明Flask代码本身没有问题,问题完全出在Amplify的路由配置上。stripe listen --forward-to https://你的Lightsail服务器IP/stripe_hook - 确认Stripe后台配置的Webhook URL拼写正确,没有多余路径或错误域名。
内容的提问来源于stack exchange,提问作者user22275609
相关产品推荐
相关产品推荐

