2

我将图像资产存储在 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。Access-Control-Allow-Origin 不允许来源http://example.dev 。

使用 Charles 监视网络,我可以看到在第二个请求中,没有向 S3 发出请求

所以这个问题似乎与 Safari 的缓存有关。

有谁知道为什么我在 Safari 中遇到此错误?

加载代码是一个名为PreloadJS的库的一部分,负责加载的类在这里。从第 370 行开始的 p_createXHR 包含 XHR 创建代码。但是,在密切关注此功能后,成功请求和失败请求之间的 XHR 请求似乎是相同的。

4

0 回答 0