我试图将CORS策略应用到我的S3存储桶中,我观察到的是,如果在任何时候,我修改了CORS策略,那么上传到S3的旧文件仍然可以不使用新的CORS政策。例如,
添加了以下CORS政策 -
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://app1.example.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
从我https://app1.example.com
托管的应用程序成功上传了一个文件a.jpeg。我也能够做一个GET和一个删除。
现在我需要为我的另一个托管应用程序使用相同的S3存储桶,例如app2。所以我将CORS策略修改为 -
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>https://app1.example.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://app2.example.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
现在,当我尝试从https://app2.example.com
获取文件a.jpeg时,我仍然看到以下错误
XMLHttpRequest cannot load <S3 URL>. Origin https://app2.mydomain.com is not allowed by Access-Control-Allow-Origin.
但是,如果我尝试从https://app2.mydomain.com
上传新文件b.jpeg,一切都会按预期运行。
修改
我之前忘记提及这一点,但我们在S3存储桶前面有一个CloudFront CDN,但我找不到与在Cloudfront配置中设置CORS策略相关的任何配置。
我们是否可以通过这种方式对以前上传的文件实施新的CORS政策?或者还有其他方法可以使这项工作吗?