我正在尝试制作网络字体并将其部署在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>
答案 0 :(得分:5)
我刚刚完成了。基本上,您可以按照步骤编辑S3存储桶权限。如果您需要任何进一步的帮助,请在下面留言。
1)登录AWS管理控制台并在https://console.aws.amazon.com/s3/
打开Amazon S3控制台2)在Buckets列表中,打开要查看其属性的存储桶,然后单击“添加CORS配置”
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
答案 2 :(得分:0)
您可以通过为存储字体的S3存储桶设置CORS配置来轻松解决此问题。
按照此处的说明启用您的存储桶上的CORS:http://docs.aws.amazon.com/AmazonS3/latest/UG/EditingBucketPermissions.html
根据此处的指定设置相应的配置:http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html
答案 3 :(得分:0)