ie9上的AWS S3跨源请求失败

时间:2013-05-13 09:49:48

标签: amazon-s3 internet-explorer-9 webfonts

我正在尝试制作网络字体并将其部署在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 个答案:

答案 0 :(得分:5)

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

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

打开Amazon S3控制台

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

amazon-screen-shot

3)在标签<CORSConfiguration>

之间写下您愿意添加的规则
<CORSConfiguration>
  <CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
  </CORSRule>
</CORSConfiguration>

您可以在http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

了解有关规则的更多信息

答案 1 :(得分:0)

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

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

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

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

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

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

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

IE9 blocks download of cross-origin web font

答案 2 :(得分: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

答案 3 :(得分:0)

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

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

enter image description here