提问者:小点点

S3:请求的资源上不存在Access-Control-Allow-Origin头


我在EU-West-1区域中有一个S3 bucket,我们称之为my-bucket

在那个桶中有一个图片,我们称之为some-file.jpg

如果我通过浏览器访问这两个URL,我就可以检索那个图片(桶中的所有对象都是公共的)(请记住,这些是示例,而不是现实生活中的URL):

https://my-bucket.s3.amazonaws.com/some-file.jpg

https://s3-eu-west-1.amazonaws.com/my-bucket/some-file.jpg

但是,我正在尝试获取有关该图片的一些信息,为此我使用了vibrant.js,它尝试检索该文件。

但是,当url为https://my-bucket.s3.amazonaws.com/some-file.jpg时,它会失败,出现以下CORS错误:

Access to Image at 'https://my-bucket.s3.amazonaws.com/some-file.jpg' from origin 'https://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://example.com' is therefore not allowed access

我已经确保桶的CORS策略接受所有来源:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我的猜测是https://s3-eu-west-1.amazonaws.com/my-bucket/some-file.jpg发送access-control-allow-origin而另一个不发送。我该怎么解决这个?


共1个答案

匿名用户

更新CORS头后是否清除了浏览器缓存

我遇到的问题是Chrome用头(不包含CORS数据)缓存图像,所以无论我尝试在AWS中更改什么,我都不会看到我的CORS头。

清除Chrome缓存并重新加载页面后,图像具有预期的CORS头