如何设置S3 CORS AllowedOrigin配置,使其动态回显Access-Control-Allow-Origin标头中的请求域?
在帖子"CORS with CloudFront,S3和Multiple Domains"中,建议设置AllowedOrigin为<AllowedOrigin>*</AllowedOrigin>执行此操作.但是,S3会返回Access-Control-Allow-Origin: *.
Access-Control-Allow-Origin: *在我的情况下不起作用,因为我image.crossOrigin = "use-credentials"在JavaScript应用程序中使用.使用此选项,S3返回Access-Control-Allow-Credentials: true.然后对图像的跨源访问失败,因为不允许使用通配符作为允许的来源与凭证一起使用.
为什么需要这样的背景:
在我的设置中,对S3上的图像的访问必须通过我们的域,其中需要验证以限制访问并检查帐户是否被授权访问图像.如果是,则服务器返回302重定向到S3 URL.
要使身份验证生效,image.crossOrigin = "use-credentials"必须进行设置,以便请求使用所需的凭据访问我的服务器.(顺便提一下,当我在Firefox 30.0和Chrome 35.0.1916.153上进行测试时,如果crossOrigin设置为anonymous,则仍然会发送凭据.但是不能在Safari 7.0.4上进行.只能使用use-credentials.获得一致的跨浏览器行为.).
由于浏览器透明地重定向到S3 URL,因此也会发送凭据.