摘要:
我有一个页面使用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>
如果我在请求头中没有设置来源,从S3请求图像时,响应中就不会有任何CORS头信息。这将被缓存,随后的CORS请求(那些在请求头中设置了来源的请求)将被拒绝,因为浏览器使用缓存中的非CORS版本。最好的解决方法是什么?我能否设置某些内容,使得非CORS版本永远不会被缓存?我应该通过在请求的URL末尾添加一个“?some_flag”来区分CORS请求吗?理想情况下,即使请求不包含“origin”,我也希望S3始终发送所需的CORS标头。