为啥 Firefox 中的网络字体不能在不同的域上工作?

Posted

技术标签:

【中文标题】为啥 Firefox 中的网络字体不能在不同的域上工作?【英文标题】:Why don't web fonts in Firefox work on a different domain?为什么 Firefox 中的网络字体不能在不同的域上工作? 【发布时间】:2011-02-02 06:22:41 【问题描述】:

我在 Firefox 3.5 中试验 fancy new OpenType font capability 时遇到了问题。我试图将字体嵌入到与将要使用的页面不同的域中,但它不起作用。我认为这可能是一个错误,但从我在 MDC 参考页面上阅读的内容中,我注意到了这个注释:

在 Gecko 中,网络字体受到相同的域限制(字体文件必须与使用它们的页面位于同一域中),除非使用 HTTP 访问控制来放宽此限制。

看起来他们是故意这样设计浏览器的。出于好奇,他们为什么要这样做?嵌入字体是否存在安全风险?或者是为了合法商标或版权问题?还是别的什么?

【问题讨论】:

我知道有些字体是受版权保护的,在网页中使用它们可能会受到法律限制。我在问这是否与他们决定对他们强制执行跨域标准有关。对我来说,这似乎不是防止使用受版权保护字体的一种非常有效的方法。 【参考方案1】:

法律商标和版权问题有时会限制嵌入字体时基于域的使用。

编辑: 这就是为什么您应该始终查看您可能购买的字体许可证上的小字母。如果您创建了它,那么您就拥有完全的所有权并且完全没有问题。

P.S:我不是律师,但可以和我的几个客户确认这个案子。

【讨论】:

【参考方案2】:

如果您想绕过它,可以尝试将其添加到您的 .htaccess 中:

Header set Access-Control-Allow-Origin *

为了回答你的问题,这可能与 Firefox 3.5 版支持cross-origin sharing standard 的事实有关。

【讨论】:

我了解了标准,并且知道如何设置访问控制标头。我在问他们为什么决定对字体进行这些限制。 “CSS @font-face 构造禁止跨域加载。通过资源共享策略,某人可以建立一个 Web 服务,将字体许可证出售给选定的服务器,并为它们处理缓存和带宽使用。 "从源头 请注意,必须在包含字体的站点上设置此标头。我遇到这种情况是因为我的字体在 static.example.com 上,但我的网站是 www.example.com。在类似的情况下,最好指定允许访问的站点,以防止有人盗链您的字体,如下所示:Header set Access-Control-Allow-Origin: http://www.example.com

以上是关于为啥 Firefox 中的网络字体不能在不同的域上工作?的主要内容,如果未能解决你的问题,请参考以下文章

将静态内容与 Web 服务托管在不同的域上,如何避免跨域?

SQL Server Management Studio 2008 Runas 用户在不同的域上通过 ***

没有网络连接无法浏览本地域

在与 api 不同的域上对单页应用进行 Auth0 身份验证

前端/后端分离:Safari 不存储来自 API 的 cookie,该 API 托管在与其前端 SPA 客户端不同的域上

为啥宽带连接的时候提示“域上的用户名或密码无效 ”?输入绝对没错的