Network 面板能看到 form_key,所以开发者认定校验没问题。但服务端校验的不是“有没有这个字段”,而是它是否与当前 Session 中的值一致。

对比请求链路

  • 加载结账页时使用的域名与提交域名是否一致;
  • POST 是否带上同一个 Session Cookie;
  • 结账 HTML 是否被 CDN 或错误的 Full Page Cache 缓存;
  • 登录、切换店铺后页面里的 form_key 是否已刷新。

不要把完整 Cookie 或 token 贴进日志。可以在测试环境只记录 form_key 的哈希前几位和 Session ID 哈希,用来判断两次请求是否属于同一会话。

如果站点为了“恢复下单”直接关闭 Checkout Form Key Validation,风险会被转移而不是消失。应修正缓存排除、Cookie Domain 或前端取值逻辑。最后在访客、登录客户、跨 Store 切换和长时间停留后提交四种场景复测。