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

Posted

技术标签:

【中文标题】内容安全策略正在阻止 Firefox 中的 svg 图标精灵【英文标题】:Content Security Policy is blocking an svg icon sprite in Firefox 【发布时间】:2021-11-29 18:24:17 【问题描述】:

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

内容安全政策:页面设置阻止加载 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 都可以正常工作。我有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

这是一个旧的 Firefox 浏览器错误 - img-src 指令在 &lt;use xlink:href=&gt; 标记中执行 not cover 源。

Firefox 使用default-src 来控制&lt;use xlink:href=&gt; 标签,因此修复问题时使用default-src 'self' 而不是default-src 'none'

【讨论】:

谢谢,这对我有用。我对这个解决方法不是很满意,但我还没有找到任何其他方法来解决这个问题。

以上是关于内容安全策略正在阻止 Firefox 中的 svg 图标精灵的主要内容,如果未能解决你的问题,请参考以下文章

内容安全策略阻止了我的JQuery脚本中的代码

内联样式的 svg 内容安全策略

由于被CORS策略(javascript,html和css)阻止,程序在Firefox中运行但不是chrome

内容安全策略:页面的设置阻止了资源的加载

Safari 中的“不允许请求资源”和 Firefox 中的“阻止加载混合活动内容”。 Chrome 中的完美功能

Firefox 中的“阻止加载混合活动内容”