要旨:
我有一个页面使用标签加载来自s3(HTML img标签)的图像,我有一个使用的页面xmlhttprequest.标记加载在没有CORS头的情况下被缓存,因此xmlhttprequest看到缓存版本,检查它的标题并失败并发生交叉原始错误.
细节:
编辑:safari 5.1.6和chrome 21.0.1180.89都失败.在Firefox 14中正常工作.
使用S3的新CORS,我设置CORSRule如下:
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>0</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
Run Code Online (Sandbox Code Playgroud)
如果我在没有在请求标头中设置原点的情况下从S3请求图像,我会在响应中返回没有任何CORS标头的图像.
这个get的缓存和随后的CORS请求(一个在请求头中设置起源的请求)被拒绝,因为浏览器使用非CORS版本形成缓存.
解决这个问题的最佳方法是什么?我可以设置一些东西,以便非CORS版本永远不会被缓存吗?我应该通过将a附加?some_flag到请求的URL来区分CORS请求吗?
理想情况下,即使请求不包含"origin",我也总是会发回所需的CORS头.