Stripe Webhook配置问题:线上指定URL后出现404错误如何解决?
Stripe Webhook配置后控制台返回404的排查方案
检查URL准确性
- 确认Stripe控制台填写的URL与服务器部署的端点路径完全匹配,注意大小写、末尾斜杠等细节,比如
https://your-domain.com/stripe-webhook和https://your-domain.com/Stripe-Webhook是不同路径 - 确保URL是公网可访问地址,Stripe无法请求localhost或内网IP;直接用
curl -X POST <your-webhook-url>测试,若返回404,说明问题在你的服务端而非Stripe
- 确认Stripe控制台填写的URL与服务器部署的端点路径完全匹配,注意大小写、末尾斜杠等细节,比如
验证服务器路由配置
- 核对后端框架的路由注册代码,比如Express中需确保
app.post('/stripe-webhook', webhookHandler)已正确挂载,没有拼写错误 - 检查是否有权限验证、CORS等中间件拦截了Stripe的请求,部分中间件可能会拒绝带Stripe签名头的POST请求,可临时禁用中间件测试
- 查看服务器访问日志,确认Stripe的请求是否真的到达后端;若日志中无对应请求记录,说明请求在反向代理层被拦截
- 核对后端框架的路由注册代码,比如Express中需确保
排查反向代理/负载均衡配置
- 若使用Nginx等代理,检查
location块是否匹配Webhook路径,比如:location /stripe-webhook { proxy_pass http://your-backend:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } - 确认代理没有重写或丢弃请求路径,避免因rewrite规则导致路径错误
- 确保服务器配置了有效SSL证书,Stripe仅允许HTTPS的Webhook URL(本地测试工具如ngrok除外)
- 若使用Nginx等代理,检查
对比本地与生产环境差异
- 用ngrok将本地服务暴露到公网,在Stripe控制台填写ngrok URL测试;若测试正常,说明问题出在生产环境的部署配置(如路由、代理、环境变量)
- 核对本地与生产环境的代码分支、依赖版本,排除因部署遗漏导致的路由未注册问题
内容的提问来源于stack exchange,提问作者Дейвид Аптикадир
相关产品推荐
相关产品推荐

