我正在尝试将 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>
Run Code Online (Sandbox Code Playgroud)已成功从托管在https://app1.example.com. 我还可以执行 GET 和 DELETE。
现在,我需要将同一个 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>
Run Code Online (Sandbox Code Playgroud)现在,当我尝试从 GET 文件 a.jpeg 时https://app2.example.com,我仍然看到以下错误
XMLHttpRequest cannot load <S3 URL>. Origin https://app2.mydomain.com is not allowed by …Run Code Online (Sandbox Code Playgroud)