Actionscript 3 安全错误#2122从Amazon Cloudfront加载图像
我正在尝试从cloudfront发行版加载映像。我的加载代码如下所示:Actionscript 3 安全错误#2122从Amazon Cloudfront加载图像,actionscript-3,amazon-web-services,amazon-cloudfront,Actionscript 3,Amazon Web Services,Amazon Cloudfront,我正在尝试从cloudfront发行版加载映像。我的加载代码如下所示: var thumbLoader:Loader = new Loader(); // add event listener to the thumbLoader thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void { if (_thumbnail.bitmapData) _thumbna
var thumbLoader:Loader = new Loader();
// add event listener to the thumbLoader
thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void {
if (_thumbnail.bitmapData) _thumbnail.bitmapData.dispose();
_thumbnail.bitmapData = (thumbLoader.content as Bitmap).bitmapData;
_thumbnail.width = stage.stageWidth;
_thumbnail.height = stage.stageHeight;
thumbLoader.unload();
});
thumbLoader.load(new URLRequest(src)); // src = https://xxxxxxxxxxxxx.cloudfront.net/big_icon.png
我曾尝试将“LoaderContext”作为第二个参数添加到“.load”调用中,但随后我只会弹出一个错误#2123而不是错误#2122。我还尝试将一个crossdomain.xml添加到我的swf所在的服务器的根目录中,但没有任何效果(我对此感到困惑,crossdomain.xml是否应该放在cloudfront上?不是我的swf服务器?cloudfront是否已经有了这个?)
更新:
我想出了一个解决我当前项目的解决方案,但我并没有完全考虑这个问题的答案。我仍然很想知道如何设置cloudfront和as3,这样我就可以处理从那里加载的位图了
当我通过访问thumbLoader.content
直接访问Bitmap
数据时,会引发错误。如果不访问.content
属性,您仍然可以显示位图,而不会出现安全错误,因此我只是将加载程序直接附加到后台,而不是将位图数据从加载程序传输到位图
实例:
stage.addChild(_thumbnail); // _thumbnail is now a Loader instance, not Bitmap
_thumbnail.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void {
_thumbnail.width = stage.stageWidth;
_thumbnail.height = stage.stageHeight;
});
_thumbnail.load(new URLRequest(src));
更新2:
我发现我甚至不能直接加载。我得到一个流错误,这似乎表明文件不在那里。cloudfront文档在这个主题上非常稀少,它说对于rtmp发行版有一个默认的crossdomain.xml,不能编辑,对于web发行版根本没有提到crossdomain.xml。如何将此文件添加或编辑到web发行版?Gahhh,答案很简单,只需将crossdomain.xml上传到cloudfront发行版指向的s3 bucket的根目录。我显然是aws n00b。因此,无论cloudfront发行版中的Originates选项卡指向何处,请转到该域并上载一个包含以下内容的crossdomain.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only" />
<allow-access-from domain="*" />
</cross-domain-policy>
这将告诉as3查找刚刚加载的crossdomain.xml,并在第一个安全错误(#2122)前找到它。第二个错误(#2123)将消失,如果您的crossdomain.xml位于正确的位置(根目录)并提供了正确的权限(我刚刚允许使用“*”访问所有域)
loader.load(new URLRequest(src), new LoaderContext(true));