Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 安全错误#2122从Amazon Cloudfront加载图像_Actionscript 3_Amazon Web Services_Amazon Cloudfront - Fatal编程技术网

Actionscript 3 安全错误#2122从Amazon 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

我正在尝试从cloudfront发行版加载映像。我的加载代码如下所示:

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));