我在几个Chrome浏览器上收到以下错误,但不是全部。在这一点上,我不完全确定问题是什么。
跨域资源共享策略已阻止加载来自源'https://ABCDEFG.cloudfront.net‘的
字体:请求的资源上不存在'Access-Control-Allow- 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文件。
发布于 2015-01-30 21:27:26
将此规则添加到您的.htaccess
Header add Access-Control-Allow-Origin "*"
更好的是,正如@david thomas所建议的那样,您可以使用特定的域值,例如
Header add Access-Control-Allow-Origin "your-domain.com"
发布于 2014-09-06 15:48:55
自2014年9月/10月以来,Chrome对字体的CORS检查与火狐对https://code.google.com/p/chromium/issues/detail?id=286681的检查相同。在https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/blink-dev/TT9D5-Zfnzw中有关于这一点的讨论
对于字体,浏览器可能会执行preflight check,然后是您的S3策略needs the cors request header as well。你可以在Safari (目前不做CORS字体检查)和Firefox (检查字体)中检查你的页面,然后再检查一遍,这就是所描述的问题。
有关亚马逊S3 CORS的详细信息,请参阅Amazon S3 CORS (Cross-Origin Resource Sharing) and Firefox cross-domain font loading上的堆栈溢出答案。
注意,因为这通常只适用于Firefox,所以搜索Firefox而不是Chrome可能会有所帮助。
发布于 2016-12-30 06:14:01
我只需在S3存储桶的CORS策略中添加<AllowedMethod>HEAD</AllowedMethod>
,就可以解决这个问题。
示例:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
https://stackoverflow.com/questions/25577981
复制相似问题