【问题标题】:Gecko/Firefox 44.0.2 blocks Google fontsGecko/Firefox 44.0.2 阻止 Google 字体
【发布时间】:2016-06-04 04:17:14
【问题描述】:

在最新的 Gecko 发布后不久,Firefox 和所有基于它的浏览器(包括 AdBlock 等 Droid 应用浏览器)停止在我的网站上呈现我的 Google 字体。没有其他浏览器受到影响。

在 Firefox (44.0.2) 中使用开发人员工具查看我的网站时,会针对其中一种字体显示以下消息:

跨域请求被阻止:同源策略不允许读取 远程资源在 http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNShampu5_7CjHW5spxoeN3Vs.woff2。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。

其他字体有相同的错误信息。

我一直允许在我的 .htaccess 文件中使用此指令使用 CORS,并且它适用于所有其他浏览器:

Header set Access-Control-Allow-Origin "*"

我使用的与错误消息中引用的字体相关的@font-face 规则是:

@font-face{font-family:'Bold';font-weight:600;font-style:normal;src:url('http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSnZ2MAKAc2x4R1uOSeegc5U.eot');src:url('http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSnZ2MAKAc2x4R1uOSeegc5U.eot?#iefix') format('embedded-opentype'),
local('Open Sans Semibold'),
local('Open-Sans-600'),
url('http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNShampu5_7CjHW5spxoeN3Vs.woff2') format('woff2'),
url('http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSqRDOzjiPcYnFooOUGCOsRk.woff') format('woff'),
url('http://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf') format('truetype'),
url('http://fonts.gstatic.com/l/font?kit=MTP_ySUJH_bn48VBG8sNSllIn5tFQcqMuf-jhyJP0ps#OpenSans') format('svg');}

Gecko 44.0.2 中的哪些更改阻止了 Google 字体在 Firefox 和其他基于相同代码库的浏览器中加载?可以做些什么来解决这个问题?

【问题讨论】:

  • 我在使用 Firefox 44.0.2 客户端时遇到了不同的 CORS 问题。此链接指向可能导致问题的安全修复程序:mozilla.org/en-US/security/advisories/mfsa2016-13我还没有解决方案。
  • 尝试根据jsbin.com/royolabaxo/1上面的sn-p重新创建测试用例。 Firefox 不会产生您所指的错误。您是否在页面上使用 JS 库或可能解析 CSS 并尝试获取字体的附加组件?

标签: css .htaccess firefox fonts cors


【解决方案1】:

我今天也开始在使用 Firefox 44.0.2(64 位 Windows 版本)时遇到此问题。我在我的页面上包含了 Google 字体,如下所示:

<link rel="stylesheet" type="text/css" media="all" href="//fonts.googleapis.com/css?family=Open+Sans|Open+Sans+Condensed:700" />

我只是按照 Iain H. 的建议进行操作,并添加了解决问题的 https:

<link rel="stylesheet" type="text/css" media="all" href="https://fonts.googleapis.com/css?family=Open+Sans|Open+Sans+Condensed:700" />

【讨论】:

    【解决方案2】:

    使用https 而不是http 为我解决了这个问题

    【讨论】:

      【解决方案3】:

      使用 CORS 允许访问您自己服务器上的内容不会影响从 其他 服务器请求的内容,例如那些字体。您请求的服务器必须发送标头。

      也就是说,我不确定 Firefox 44 中可能发生了什么变化。Firefox 一直强制执行同源限制(可通过 CORS 解除),因此如果它在理想情况下应该继续工作之前工作。向 Mozilla 提交错误?

      【讨论】:

        猜你喜欢
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        • 2017-09-10
        • 2014-08-23
        • 2017-05-21
        • 1970-01-01
        • 1970-01-01
        • 2015-12-14
        相关资源
        最近更新 更多