内容安全策略阻止了 Firefox 中的 svg 图标精灵

Content Security Policy is blocking an svg icon sprite in Firefox

我试过在网上搜索,但没有成功。我一直在使用 Chrome/Edge 在我的网站上工作,今天我尝试在 Firefox (93.0) 中打开它,我注意到我的图标 none 正在加载。此错误消息出现在控制台中:

Content Security Policy: The page’s settings blocked the loading of a resource at http://localhost/icons.svg (“default-src”).

这似乎表明 default-src 被用作后备。我是 运行 具有此 CSP 的 Apache 服务器:

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'"

图标精灵是这样使用的:

<svg class="icon"><use href="icons.svg#settings"></use></svg>

这只是 Firefox 中的一个问题,因为 Edge、Chrome 和 iOS Safari 都可以正常工作。我有什么办法可以解决这个问题吗?

这是一个旧的 Firefox 浏览器错误 - img-src 指令在 <use xlink:href=> 标签中执行 not cover 源。

Firefox 使用 default-src 来控制 <use xlink:href=> 标签,因此要修复问题,请使用 default-src 'self' 而不是 default-src 'none'.