对接Stripe触发Livemode请求需HTTPS重定向报错如何解决

报错核心原因
StripeInvalidRequestError: Livemode requests must always be redirected via HTTPS 触发的根本原因是:Stripe正式(Live)模式强制要求全请求链路走HTTPS协议,只要请求链路中存在任意HTTP明文跳转环节,就会抛出这个错误。
排查思路
- 核对所有Stripe后台配置的地址:包括Webhook端点地址、支付完成/取消的跳转return_url、关联的业务回调地址,检查有没有误填成
http://开头的HTTP地址,这类问题大多是测试环境用HTTP调试,切正式环境时忘记修改对应配置导致的。 - 检查链路中间件配置:如果你的服务前置了Nginx、CDN、负载均衡、WAF这类转发组件,排查是否存在HTTPS请求被301/302跳转到HTTP地址的规则;另外要确认反代层有没有正确传递协议标识头,漏传
X-Forwarded-Proto会让后端服务把HTTPS请求误识别为HTTP。 - 核对密钥与环境匹配度:检查代码中加载的Stripe密钥是否和当前运行模式匹配,正式环境必须用
sk_live_开头的正式密钥,测试环境用sk_test_开头的测试密钥,环境变量配置错误导致密钥和模式错配也会触发这类校验报错。 - 排查本地调试代理配置:如果是在本地环境调试时触发报错,检查全局抓包工具、代理工具是否把发往Stripe的HTTPS请求劫持降为HTTP转发,常见于没正确安装抓包工具根证书、代理规则配置错误的场景。
解决方案
- 所有Stripe正式环境关联的访问地址,全部替换为
https://开头,确保对应域名的SSL证书在有效期内、被公网信任,不存在证书链不全的问题。 - 统一转发层配置:Nginx反代场景下补充配置
proxy_set_header X-Forwarded-Proto $scheme;,CDN、负载均衡侧将回源协议固定为HTTPS,开启强制HTTPS跳转规则,删除所有跳转到HTTP地址的转发规则。 - 增加启动环境校验:在服务启动逻辑中增加校验,生产环境强制校验加载的Stripe密钥前缀为
sk_live_才会启用Live模式,从代码层面避免测试/正式密钥混用。 - 本地调试优先使用Stripe测试密钥走HTTP调试,必须调试正式接口时,用mkcert等工具生成本地可信HTTPS证书,不要用裸HTTP地址调用Stripe Live模式接口。
内容的提问来源于stack exchange,提问作者vaidehi
相关产品推荐
相关产品推荐

