cro*_*ies 6 javascript html5 cors
与画布,特别是谷歌浏览器玩得开心.现在我正在通过Javascript加载图像,这个图像将在用EaselJS包装的画布中使用.这是我如何加载图像(托管在S3上):
imageLoad: function(imageUrl, imageId) {
var image = new Image();
image.crossOrigin = "Anonymous";
image.imageId = imageId
image.onload = this.handleImageLoad;
image.src = imageUrl;
}
Run Code Online (Sandbox Code Playgroud)
图像存储在具有以下CORS属性的Amazon S3存储桶中:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>1</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
Origin加载上面的图像时,浏览器似乎没有设置标题.如果图像已经在javascript之外加载并由浏览器缓存,则尤其会发生这种情况.然而 - 这里变得奇怪 - 一旦第二次尝试使用Javascript加载图像,那么CORS安全问题就会消失(显然浏览器会设置Origin标题).
我们已多次测试此行为,并通过设置一个强制CORS标头与每个响应的服务器来确认它.Origin即使明确询问,浏览器似乎也没有添加标题.
因此,鉴于所有这些信息,我们可以做些什么来解决这个问题?是否可以强制Amazon CloudFront添加CORS标头?有问题image.crossOrigin = "Anonymous"吗?
这个问题的解决方案只是将 Fastly CDN ( http://fastly.com ) 放在我们的 S3 存储桶前面。这是一种不太漂亮的处理方式,但我们能够在服务的“设置”部分下注入自定义标头。
这是这个特定问题的解决方案。
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |