Stripe在localhost运行正常但线上环境报JSON.parse错误如何解决
Stripe Checkout 线上JSON解析报错排查方案
报错信息:JSON.parse: unexpected character at line 1 column 1 of the JSON data
第一步 校验接口响应原始内容
- 打开线上站点浏览器控制台「网络」面板,筛选所有Stripe相关的接口请求,定位到返回异常的请求:
- 检查响应头的
Content-Type字段,如果值为text/html,说明接口返回的是HTML错误页(404/500/权限拦截页等),HTML开头的<字符会直接触发首字符解析异常 - 复制完整响应体内容,手动执行
JSON.parse(响应内容)校验,确认是否存在BOM头、多余转义字符、非JSON结构内容,若响应体为空也会触发该报错
- 检查响应头的
第二步 核对Payment Intent参数与配置
- 对比本地、线上环境调用Stripe接口的入参差异:
- 打印线上环境生成Payment Intent时的完整字段,确认是否存在本地测试用的无效字段、漏传必填字段,和本地正常请求的入参做逐行对比
- 确认线上环境配置的Stripe公钥、密钥正确,权限匹配,避免因密钥错误/权限不足返回非预期的错误响应
第三步 排查服务端与中间层差异
- 确认线上服务端安装的Stripe SDK版本和本地开发环境完全一致,不同版本的SDK返回的Payment Intent结构存在差异,可能包含本地不存在的字段或者缺少必填字段
- 排查线上服务端的反向代理、WAF、CDN等中间层是否篡改了响应内容,比如注入额外代码、拦截请求后返回非JSON格式的错误提示
第四步 本地模拟线上环境复现
- 将本地开发环境的所有配置(Stripe密钥、接口请求路径、域名映射等)修改为和线上完全一致,模拟线上请求流程复现问题,定位具体出错点
内容的提问来源于stack exchange,提问作者lorenzotarquini
相关产品推荐
相关产品推荐

