5

我正在尝试制作一种网络字体并将其部署在 AWS S3 上。

在除 IE9 之外的所有浏览器中都可以正常工作,它表示尝试加载 woff 文件时跨域请求失败。

我已经在许多论坛上阅读了很多关于有此问题的人的信息,但我一直无法找到解决方法。

我认为这与 S3 上的 CORS 设置没有向 IE9 发送正确的数据或某些东西有关吗?

(适用于 Firefox、Chrome、IE7、8 等)

我看到的解决问题的唯一建议是,启动一个 EC2 实例并为字体创建一个 Web 主机(完全矫枉过正!),另一个是将 css 文件命名为 .php 并在 php 中设置标题(但是这是愚蠢的)。

任何人都知道如何(如果可能的话)解决这个问题?

谢谢

编辑

我的 CORS 配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
4

4 回答 4

5

我刚刚做了。基本上,您可以按照以下步骤编辑您的 S3 存储桶权限。如果您需要任何进一步的帮助,请在下方留言。

1) 登录 AWS 管理控制台并在https://console.aws.amazon.com/s3/打开 Amazon S3 控制台

2) 在 Buckets 列表中,打开要查看其属性的 Bucket,然后点击“添加 CORS 配置”

亚马逊屏幕截图

3)写下你愿意在标签之间添加的规则<CORSConfiguration>

<CORSConfiguration>
  <CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
  </CORSRule>
</CORSConfiguration>

您可以在以下位置了解有关规则的更多信息:http: //docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

于 2013-11-12T21:24:48.873 回答
0

IE9支持.WOFF;IE8 不支持,并且仅支持 .EOT 字体。

打开 IE9 F12 开发人员工具,您会看到以下消息:

CSS3117:@font-face 跨域请求失败。资源访问受到限制。Neuton-webfont.woff

CSS3117:@font-face 跨域请求失败。资源访问受到限制。YanoneKaffeesatz-Regular-webfont.woff

CSS3114:@font-face 未能通过 OpenType 嵌入权限检查。权限必须是可安装的。Neuton-webfont.ttf

CSS3114:@font-face 未能通过 OpenType 嵌入权限检查。权限必须是可安装的。YanoneKaffeesatz-Regular-webfont.ttf 检查您的 HTTP 标头,很明显您的跨域访问配置不正确,因为您的 WOFF 文件上没有 Access-Control-Allow-Origin 响应标头。它们还提供了错误的 MIME 类型(文本/纯文本),尽管这不会导致您的问题。

如果您想在您的计算机上保留 IE8 并针对 IE9 进行测试,请从此处下载独立的 Platform Preview 8

IE9 阻止下载跨域网络字体

于 2013-05-22T15:36:16.683 回答
0

您可以通过为存储字体的 S3 存储桶设置 CORS 配置轻松解决此问题。

  1. 按照此处的说明在您的存储桶上启用 CORS:http: //docs.aws.amazon.com/AmazonS3/latest/UG/EditingBucketPermissions.html

  2. 设置此处指定的适当配置:http: //docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

于 2013-07-25T18:57:28.807 回答
0

使 CORS 设置对我有用的事情是单击 CORS 设置页面上的 DELETE 按钮,然后添加新的 CORS 配置

在我按下 DELETE 之前,编辑现有设置似乎没有任何效果。

在此处输入图像描述

于 2017-11-10T11:20:11.193 回答