小编Wes*_*Wes的帖子

缓存的非CORS响应与新的CORS请求冲突

要旨:

我有一个页面使用标签加载来自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头.

caching xmlhttprequest amazon-s3 cors

32
推荐指数
2
解决办法
4182
查看次数

标签 统计

amazon-s3 ×1

caching ×1

cors ×1

xmlhttprequest ×1