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

如何修复PHP对接Stripe时GCP生产环境虚拟机POST请求返回403错误

根因分析

根据两个环境的配置差异,403错误的可能原因按优先级排序如下:

  • Cloud Armor规则拦截:生产环境负载均衡绑定的Cloud Armor如果配置了IP白名单限制、WAF防护规则,会直接拦截Stripe的Webhook请求,返回403响应。此时请求未到达后端Apache服务,因此$payload = @file_get_contents('php://input');读取结果为空。
  • 负载均衡配置错误:
    1. 若负载均衡开启了身份感知代理(IAP),未授权的外部Stripe请求会被直接拦截返回403
    2. 负载均衡若配置了HTTP强制跳转HTTPS规则,Stripe发送的POST请求跳转时会丢失请求body,同时请求方法转为GET,触发接口权限校验返回403
    3. 负载均衡的后端服务配置了请求校验规则,丢弃了POST请求的body内容,导致Stripe签名校验失败返回403
  • Apache层访问控制拦截:生产环境配置SSL后,若Apache开启了mod_security模块、.htaccess文件配置了来源IP限制、请求方法过滤规则,也会拦截Stripe的Webhook请求返回403
修复方案

按优先级执行以下排查修复操作:

  1. 检查Cloud Armor规则:
    • 放行Stripe官方公布的所有Webhook出口IP段,关闭针对Webhook接口路径的WAF检测规则
    • 查看Cloud Armor日志,确认请求被拦截的具体规则,针对性调整
  2. 调整负载均衡配置:
    • 确认负载均衡未对Stripe Webhook接口路径开启IAP认证
    • 若配置了HTTP转HTTPS规则,配置例外规则允许Stripe的Webhook请求直接通过HTTPS访问,或在Stripe后台将Webhook地址修改为HTTPS协议
    • 检查负载均衡请求转发配置,确保POST请求的body内容完整透传给后端Apache服务
  3. 校验Apache配置:
    • 检查Apache的虚拟主机配置、.htaccess文件,确认未限制Stripe的IP访问、未拦截POST请求
    • 关闭mod_security模块针对Webhook接口的检测规则,避免误拦截
  4. 完成配置后,使用Stripe后台的测试Webhook功能发送测试请求,确认返回200响应且PHP可正常读取payload内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:18:00