我试图将图片加载到我已与我的应用集成的Aviary照片编辑器中。照片托管在AWS上,而我的应用程序在Heroku上。每当我将照片加载到应用程序中时,它们都显示正常,但是当我将它们传递到试图将它们加载到Adobe Cloud服务器上的Aviary SDK时,我收到一条CORS错误:
Image from origin 'https://s3.amazonaws.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://app.example.com' is therefore not allowed access.
我已经阅读过亚马逊的doc on CORS,但我正努力让它发挥作用。我的存储桶有以下访问策略:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
更令人困惑的是,这似乎有时只会发生。其他时候图像加载到编辑器就好了。有时这也发生在localhost上。错误是相同的,除了最后一行是Origin 'null' is therefore not allowed access
。
我也尝试过以下政策,但没有成功。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://app.example.com/</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://app.example.local:3000/</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我还应该注意,此问题似乎只会偶尔发生在我的计算机(Mac)上,但一直发生在Chrome(最新)Windows上。