You need to enable JavaScript to run this app. Mailchimp API 换服务器后,原正常可用的 Campaign 发送接口报 Bad Request
优惠活动
大模型
产品
解决方案
定价
更多

Mailchimp API 换服务器后,原正常可用的 Campaign 发送接口报 Bad Request

迁移服务器后Mailchimp Campaign发送接口Bad Request排查

问题场景

业务服务迁移至全新服务器后,Mailchimp Campaign创建流程可正常执行,仅在调用Campaign发送接口时返回HTML格式的通用Bad Request错误(非业务接口常规返回的JSON格式错误),说明请求未到达Mailchimp业务后端,在前置网络层就被拦截。

潜在报错诱因

  • 请求头规范匹配问题:当前代码配置的Content-Type: application/vnd.api+json不符合Mailchimp 3.0接口的实际要求。老服务器环境对不规范请求的容忍度更高,新服务器对应的前置CDN/WAF会直接拦截不符合规范的请求
  • curl版本行为差异:新老服务器的curl版本存在版本差,新版本curl在发起无显式请求体的POST请求时,会自动附加Expect: 100-continue请求头;若新服务器curl编译时未内置gzip编码支持,还会生成畸形的Accept-Encoding头,两类异常都会触发前置CDN的通用Bad Request拦截
  • 请求URL拼接异常:新服务器读取的oauth_api_endpoint配置值携带隐藏特殊字符(如尾部空格、换行符),导致拼接出的API域名结构畸形,无法被CDN正常路由
  • User-Agent配置失效:代码中引用的$cuseragnet变量在新服务器环境下未正确赋值(为空或携带特殊字符),触发WAF的可疑请求拦截规则

排障操作步骤

  • 开启curl请求调试,通过curl_getinfo()提取实际发出的完整请求URL、发送的请求头列表,与老服务器的正常请求日志逐行比对差异
  • 显式补充POST空请求体配置:curl_setopt($ch, CURLOPT_POSTFIELDS, '{}');,避免空POST导致的请求结构异常
  • 强制移除自动附加的Expect头:在请求头数组中加入Expect:空值项
  • 修正Content-Type配置为标准的application/json
  • 对比新老服务器的curl版本、SSL编译参数,排除环境依赖差异导致的请求问题

内容的提问来源于stack exchange,提问作者Clint C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 20:54:05