ScriptTag 注入的脚本被 CSP 拦截怎么放行
现象#
前台控制台出现 Refused to load the script because it violates the following Content Security Policy directive,应用挂件整块空白。
原因#
- 主题在 theme.liquid 里写了 CSP meta,script-src 没包含应用域名
- 商家用 Cloudflare 或安全应用注入了 CSP 响应头,覆盖默认策略
- 脚本内部用 eval 或 new Function,被缺少 unsafe-eval 的策略拦住
- 白名单写死了固定 CDN 子域,而 ScriptTag 实际从别的域名加载
处理步骤#
- 在 DevTools 的
Network里查看文档响应头,找到实际生效的 CSP - 在 theme.liquid 里搜索
Content-Security-Policy - 把脚本域名加入
script-src,Shopify CDN 也要放行 - 去掉内联执行,改成外链并按策略要求加上 nonce
- 先清掉浏览器与 CDN 缓存,再用无痕窗口复测一遍
验收标准#
控制台无 CSP 报错,脚本请求返回 200,挂件正常渲染。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。