Shopify 应用与扩展

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 实际从别的域名加载

处理步骤#

  1. 在 DevTools 的 Network 里查看文档响应头,找到实际生效的 CSP
  2. 在 theme.liquid 里搜索 Content-Security-Policy
  3. 把脚本域名加入 script-src,Shopify CDN 也要放行
  4. 去掉内联执行,改成外链并按策略要求加上 nonce
  5. 先清掉浏览器与 CDN 缓存,再用无痕窗口复测一遍

验收标准#

控制台无 CSP 报错,脚本请求返回 200,挂件正常渲染。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。