【发布时间】:2014-10-24 00:55:11
【问题描述】:
我在几个 Chrome 浏览器上收到以下错误,但不是全部。目前不完全确定问题所在。
来自“https://ABCDEFG.cloudfront.net”的字体已被跨域资源共享策略阻止加载:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'https://sub.domain.com' 因此不允许访问。
我在 S3 上有以下 CORS 配置
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedHeader>*</AllowedHeader>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
请求
Remote Address:1.2.3.4:443
Request URL:https://abcdefg.cloudfront.net/folder/path/icons-f10eba064933db447695cf85b06f7df3.woff
Request Method:GET
Status Code:200 OK
Request Headers
Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:abcdefg.cloudfront.net
Origin:https://sub.domain.com
Pragma:no-cache
Referer:https://abcdefg.cloudfront.net/folder/path/icons-e283e9c896b17f5fb5717f7c9f6b05eb.css
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36
来自 Cloudfront/S3 的所有其他请求都能正常工作,包括 JS 文件。
【问题讨论】:
-
我遇到了同样的问题...升级到 chrome 37.0.2062.94 后我开始注意到它
-
更新 CORS 配置后,我重命名了资产并设法使其正常工作。因此,要么 1)CORS 配置仅应用于文件创建(不更新),要么 2)CORS 配置缓存在 Cloudfront 中。如果其他人可以确认它也适用于他们,我会将其作为答案发布。
-
刚刚在 Chrome v. 37.0.2062.94 中注意到这一点,但不是早期版本。我在 S3 上根本没有 CORS 配置,所以这不应该发生,对吧?
-
@Ghopper21 您需要正确的 CORS 配置。在 Firefox 中进行测试,这会给你(可能)相同的结果。
-
@RichPeck - 通过将正确的 CORS 配置添加到 S3 来修复(或者如果从源代码自动创建 CDN,那么它会更复杂一些 - 您必须添加适当的标头,然后使您的缓存无效字体)... stackoverflow.com/questions/12229844/… 更多详细信息,请参阅下面的答案
标签: amazon-web-services amazon-s3 cors amazon-cloudfront