我試圖從我的cloudfront發佈加載圖像。我的加載代碼的樣子:安全錯誤#2122從亞馬遜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已經擁有這個?)。
UPDATE:
我想出了我的當前項目工作的解決方案,但我真的不認爲一個完整的答案的問題。仍然很想知道如何設置cloudfront和as3,以便可以從那裏加載位圖。
當我通過訪問thumbLoader.content
直接訪問Bitmap
數據時會引發錯誤。您仍然可以明顯地顯示位圖沒有安全性錯誤,如果你不訪問.content
財產,所以我只是附加直接加載到舞臺,而不是位圖數據從裝載機轉移到Bitmap
實例:
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:
我發現我甚至不能直接加載https://xxxxxxxxxxxx.cloudfront.net/crossdomain.xml。我得到一個流錯誤,這似乎表明該文件不存在。在這個主題上,cloudfront文檔非常稀少,他說對於rtmp發行版有一個默認的crossdomain.xml,它不能被編輯,並且根本沒有提到web發行版的crossdomain.xml。如何將此文件添加或編輯到Web分配?