You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloudflare环境下Stripe webhook返回HTTP 301错误问题求助

核心原因前提

Stripe 官方 Webhook 推送逻辑默认不会跟随 301/302 重定向,只要目标地址返回重定向状态码就会直接判定推送失败,所以必须保证配置的地址直接返回2xx状态码。


排查方向1:Cloudflare 侧配置校验

  • 检查Cloudflare重定向规则/页面规则,是否存在非斜杠结尾路径强制补全尾部斜杠的全局规则:你配置的Webhook地址是https://example.com/stripe-webhook(无尾部斜杠),如果Cloudflare规则将所有无斜杠结尾的路径301重定向到带/的版本,就会触发该错误。你手动测试时如果使用的客户端默认自动跟随重定向,就会感知不到重定向过程。
  • 检查Cloudflare SSL/TLS加密模式:确认加密模式设置为「完全」或「严格」,如果使用「灵活」模式,Cloudflare到源站Nginx的请求会走HTTP协议,若Nginx配置了全局HTTP强制跳HTTPS规则,就会返回301重定向。
  • 临时开启Cloudflare「开发模式」绕过所有缓存与规则,再用Stripe后台的测试推送功能验证,确认是否是Cloudflare侧规则导致的问题。

排查方向2:Nginx 反向代理配置校验

  • 检查Nginx全局重写规则,是否有全局路径重写、尾部斜杠补全、HTTP跳转HTTPS的逻辑,为/stripe-webhook路径单独配置最高优先级的location块,避免被全局规则匹配,参考配置:
location = /stripe-webhook {
    proxy_pass http://127.0.0.1:你的Node服务监听端口;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    # 禁止当前路径被其他重写规则作用
    break;
}
  • 使用curl命令模拟Stripe请求,不要使用浏览器或自动跟随重定向的客户端测试,执行以下命令查看原始响应:
curl -I -X POST https://example.com/stripe-webhook -H "User-Agent: Stripe/1.0"

如果返回头中存在Location字段和301状态码,即可直接定位重定向的返回层级。

排查方向3:NodeJS 服务逻辑校验

  • 确认Node服务没有引入全局路径重定向中间件(如express的slash中间件、Next.js的trailingSlash配置),避免服务层自动对路径做301重定向处理。

内容的提问来源于stack exchange,提问作者StanFlint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:15:08