升级后 Checkout 能打开,但信用卡区域只剩空白。Console 出现 CSP 报错。最危险的临时处理是给 script-src 加宽泛的星号或 unsafe 配置,这会让 CSP 失去大部分意义。
先确定被哪个 directive 拦截
支付 SDK 不只有脚本,还会创建 iframe、请求 API、加载字体或图片。分别记录被拦截 URL 和 script-src、frame-src、connect-src、img-src。第一个错误消失后,后续资源仍可能被拦。
在模块中做最小范围白名单
<policy id="frame-src">
<values>
<value id="payment-frame" type="host">https://secure.payment.example</value>
</values>
</policy>通过 etc/csp_whitelist.xml 为确切资源类型添加可信主机。域名来自支付商官方文档和实际 Network,请勿把整个顶级域或任意 HTTPS 放开。测试与生产域名不同要分开管理。
用 Report-Only 收集遗漏
先在预发布或受控流量观察报告,按页面与来源整理。标签管理器可能动态引入更多域名,需要和业务确认哪些真正必需。
最终测试表单展示、3DS 跳转、失败重试、保存卡与回调。浏览器无 CSP 错误只是基础,支付链路也必须完整。白名单越小,后续供应商改域名时越容易审计。

