You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox中Content Security Policy阻止svg icon sprite加载如何解决?

问题原因

该问题由Firefox和Chromium/Safari的CSP资源分类规则差异导致:

Chromium、Safari浏览器会将<use>标签引用的外部SVG雪碧图归属到img-src规则校验,而Firefox 93版本会将这类跨文件的SVG片段加载归属到child-src规则校验,你当前的CSP配置未声明child-src规则,因此触发了default-src 'none'的拦截逻辑。

修复方案

方案1(优先,改动最小)

修改Apache服务器的CSP配置,新增child-src 'self'规则即可兼容Firefox,修改后的完整配置如下:

Header set Content-Security-Policy "default-src 'none'; img-src 'self'; object-src 'none'; script-src 'self'; style-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; connect-src 'self'; child-src 'self'"

方案2(无外部资源依赖)

将SVG雪碧图的内容直接内嵌到页面HTML中,<use>引用页面内部的SVG ID即可,无需加载外部SVG文件,自然不会触发CSP拦截,适合图标数量较少的场景。
示例写法:

<!-- 页面头部内嵌雪碧图 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
  <symbol id="settings" viewBox="0 0 24 24">
    <!-- 图标路径 -->
  </symbol>
  <!-- 其他图标symbol -->
</svg>

<!-- 调用图标 -->
<svg class="icon"><use href="#settings"></use></svg>

方案3(兼容极旧版本Firefox)

如果还需要兼容更旧的Firefox版本,可以在CSP中额外补充font-src 'self'规则,部分极旧版本Firefox会将SVG图标资源归类到字体资源校验。

内容的提问来源于stack exchange,提问作者user6731413

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:39:05