AWS S3 CORS策略是否为文件级别?

时间:2015-07-08 18:17:54

标签: amazon-web-services amazon-s3 cors

我试图将CORS策略应用到我的S3存储桶中,我观察到的是,如果在任何时候,我修改了CORS策略,那么上传到S3的旧文件仍然可以不使用新的CORS政策。例如,

  1. 我创建了一个S3存储桶" X"
  2. 添加了以下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>
    
  3. 从我https://app1.example.com托管的应用程序成功上传了一个文件a.jpeg。我也能够做一个GET和一个删除。

  4. 现在我需要为我的另一个托管应用程序使用相同的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>
    
  5. 现在,当我尝试从https://app2.example.com获取文件a.jpeg时,我仍然看到以下错误

    XMLHttpRequest cannot load <S3 URL>. Origin https://app2.mydomain.com is not allowed by Access-Control-Allow-Origin.
    
  6. 但是,如果我尝试从https://app2.mydomain.com上传新文件b.jpeg,一切都会按预期运行。

  7. 修改

    我之前忘记提及这一点,但我们在S3存储桶前面有一个CloudFront CDN,但我找不到与在Cloudfront配置中设置CORS策略相关的任何配置。

    我们是否可以通过这种方式对以前上传的文件实施新的CORS政策?或者还有其他方法可以使这项工作吗?

0 个答案:

没有答案