如果我清除了浏览器缓存,那么只需从支持Cloudfront的S3存储桶中找到所有内容。但是,当我关闭缓存时,我在控制台中收到错误:
来自原始图片[ORIGIN网址]已被跨源资源共享政策阻止加载:否' Access-Control-Allow-Origin'标头出现在请求的资源上。因此,不允许原点[我的本地地址]访问。
MY CORS配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我也回顾了这个建议并更改了cloundfront发行版设置。它似乎已经起作用了,但现在绝对不能使用浏览器缓存: CORS problems with Amazon S3 on the latest Chomium and Google Canary
我也试过把&#34; Header添加Access-Control-Allow-Origin&#34; *&#34;&#34;在我的网站.htaccess。没运气。注意:我的网站是从localhost托管和访问的(它是一个开发环境)。
答案 0 :(得分:11)
我发现自己遇到了同样的问题:没有Access-Control-Allow-Origin出现。这是非常随机的,有时它是有效的,有时它没有。我终于以这种方式缩小了它:
以下是如何轻松测试CORS标头:
SELECT ID, Datum AS DateField, Assets
FROM dbTable
GROUP BY Datum, ID, Assets
HAVING Datum >= DateAdd("yyyy", -1, DateValue(Forms!YourForm!txtDatum))
ORDER BY Datum DESC;
在我的情况下,它在S3中可以正常工作,但在CloudFront中,它只会有时返回访问控制标题:
curl -i -H "Origin: http://YOUR-SITE-URL" http://S3-or-CLOUDFRONT-URL | grep Access
经过更多研究后,我发现我们的CloudFront分配已配置为阻止标题进入S3。解决这个问题:
一旦标题进入S3,我们总能通过上面的 curl 命令看到正确的访问控制信息。
答案 1 :(得分:2)
我遇到了同样的问题,发现如下所示暴露标题可以解决问题:
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>MYIP</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>