我在S3上存储图像资源并使用XHR请求它们。我在S3上有一个CORS策略文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
在Chrome和Firefox中,一切都运行良好,但我在Safari中遇到了问题...
如果我清除缓存并请求图像,则没有问题,图像加载成功,但是如果我刷新页面,则图像无法加载,我收到以下错误:
XMLHttpRequest无法加载 http://s3-eu-west-1.amazonaws.com/my.bucket.com/photographs/example.jpg?1369324610。 来源http://example.dev不被允许 访问控制允许来源。
使用Charles观看网络,我可以看到第二次请求时,没有向S3提出请求。
所以问题似乎与Safari的缓存有关。
有没有人知道为什么我在Safari中收到此错误?
加载代码是名为PreloadJS的库的一部分,负责加载的类是here。从第370行开始的p_createXHR包含XHR创建代码。但是,在密切关注此功能后,XHR请求在成功请求和失败请求之间似乎相同。