我在DisplayObject上使用BitmapData.draw(),其中包含来自我的AWS S3存储桶的图像。当我将S3图像URL设置为Image对象的源时,图像在swf中加载得很好但是当我在它上面使用BitmapData.draw()时,它给了我这个错误:
SecurityError:错误#2122:安全沙箱违规: BitmapData.draw:https://www.example.com/Example.swf无法访问 https://s3.amazonaws.com/example-images/example.jpg。策略文件是 必需,但此媒体时未设置checkPolicyFile标志 加载。
AS代码:
var bmpd:BitmapData = new BitmapData(objectToDraw.width,objectToDraw.height);
bmpd.draw(objectToDraw);
我已尝试将以下crossdomain.xml文件放入我的S3存储桶根目录中无效:
<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
答案 0 :(得分:3)
有两种方法可以访问S3上的文件:
s3.amazonaws.com/[bucket name]/file.ext
[bucket name].s3.amazonaws.com/file.ext
由于crossdomain.xml文件需要位于域的根文件夹中,并且您无法访问s3.amazonaws.com
的根文件夹,因此无法控制crossdomain.xml
文件如果你使用第一种方法
如果您使用的是第二种方法,则可以将crossdomain.xml
文件放在存储桶的根文件夹中,Flash Player将正确使用该文件。