页面主体已经打开,但右上角购物车一直转圈,Network 中 customer/section/load 连续返回 400。这个请求负责加载购物车、客户信息等私有内容,问题通常不在 minicart 模板,而在请求参数、会话 Cookie 或自定义 section 的返回值。
先保留一个失败请求。在 Network 里复制为 cURL,去掉真实会话值后记录请求路径、sections 参数、Store Cookie 和响应正文。400 的 JSON 消息比“前端转圈”更接近原因。
curl -sk 'https://shop.example.com/customer/section/load/?sections=cart&force_new_section_timestamp=false' -H 'X-Requested-With: XMLHttpRequest' -D /tmp/section.headers -o /tmp/section.json
cat /tmp/section.headers
head -c 1000 /tmp/section.json
只在特定页面失败:查 sections.xml
grep -Rni "<section name=" app/code/*/*/etc/frontend/sections.xml
grep -Rni "customerData.reload|customerData.invalidate" app/code app/design | head -n 80
自定义 action 若把所有 section 都标记为失效,每次点击都会触发大请求;section 名称写错,或 JS 请求服务端不存在的 section,也会失败。先把请求缩小到 sections=cart,若单独成功,再逐个加入其他 section。
所有页面都失败:对齐会话与 Cookie
- 确认域名、HTTPS 和 Cookie Domain 没有在 www/非 www 间跳转;
- 检查 PHPSESSID、private_content_version 是否被 CDN 缓存进公共响应;
- 多节点环境确认 Session 使用共享存储;
- 清测试域名站点数据可用于验证,但不能当成最终修复。
bin/magento config:show web/cookie/cookie_domain
bin/magento config:show web/secure/base_url
grep -n "session" app/etc/env.php
自定义 section 不应让整条请求崩溃
public function getSectionData(): array
{
try {
return ['value' => $this->service->getValue()];
} catch (MagentoFrameworkExceptionLocalizedException $e) {
return ['value' => null, 'available' => false];
}
}
不要吞掉所有 Throwable;真正的代码错误应写日志并修复。完成时,首次加载只有预期的 section 请求,响应 200,重复刷新不形成循环,加入购物车后数量及时变化。

