【问题标题】:Using Imported Fonts in a Google App在 Google 应用中使用导入的字体
【发布时间】:2018-04-06 08:38:29
【问题描述】:

我正在使用 Google Apps 脚本创建一个网络应用程序。当我想从 Google Docs 导入照片时,我遵循了 this question 的建议,并且效果很好。我认为类似的过程适用于使用托管在 Docs 上的自定义字体,但它会引发 CORS 异常。

相关代码:

@font-face {
    font-family: MyCustomFont;
    src: url("https://drive.google.com/uc?export=download&id=1r2a5nd6om75url39428dfju4");
} 

#headBanner {
    font-family: MyCustomFont;
}
<div id="headBanner"> 
  <p>This text should be in MyCustomFont</p>
</div>

它抛出的错误是:“从源 '[我正在使用的 Google 脚本页面]'访问'[URL in font]' 的字体已被 CORS 策略阻止:没有'Access-Control-Allow-Origin ' 请求的资源上存在标头。因此,不允许访问 Origin '[Google Script page I'm using]'。"

我该如何解决这个问题?我只是觉得它会为字体文件而不是图片引发 CORS 异常,这让我感到困惑。

【问题讨论】:

  • 令我感到困惑的是,默认情况下允许图像的“Access-Control-Allow-Origin”,如果您不希望您的图像被其他人显示,则需要专门关闭域。对于这个异常,我仍然没有找到合理的解释。对于任何其他类型的文件,包括字体文件或样式表,除非它们被允许用于所有或您请求资源的特定域,否则它们是不允许访问的。但是您始终可以访问该资源(或下载它),将其保存到您自己的服务器,然后您就可以从那里加载它。 可以,而不是可以

标签: html css cors font-face


【解决方案1】:

字体文件以及使用 fetch 的 AJAX 请求是唯一使用 CORS 的东西。 JavaScript(通过标签)和 CSS 的图像请求和静态内联请求不会调用 CORS。

在这种情况下,除了(正如@andrei-gheorghiu 建议的那样)手动下载字体文件,将其保存到您的服务器然后从那里访问它之外,您无能为力。虽然您可以在技术上做到这一点,但在技术上窃取。因此他使用“可以,不可以”......

有趣的事实 - CORS 基本上是为您遇到的特定用例而发明的 - 因此“字体工厂”可以设计字体(显然这要花钱)然后能够允许/拒绝访问这些字体文件,具体取决于您是否支付了许可费。

无疑不是你想要的答案,但仍然是答案。

【讨论】:

  • 感谢您的回答!我相信我会改用谷歌字体。
  • 可能是明智的 - 我从来没有看到使用特定的许可字体有什么好处 - 但是,我一直专注于功能,而不是形式 - 只要我能阅读它,它就很好:)
猜你喜欢
  • 2021-12-06
  • 2020-07-12
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 2014-09-28
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多