當試圖從我的SWF文件的域不同的域加載SWF,我得到這個錯誤:從另一個域訪問的SWF
*安全沙箱衝突* 的SecurityDomain「文件:/// C: /文件和設置/首頁/我的文檔/的Flex Builder 3/SwfLoad/bin中調試/ SwfLoad.swf」試圖訪問不兼容的情況下
'http://mydomain.com/crossdomain.xml'
加載類的失敗。類名是MGroundTileInsideZ1失敗錯誤是引發SecurityError:
錯誤#2119:安全性違規:呼叫者文件:/// C:/ Documents和設置/首頁/我的文檔/的Flex Builder 3/SwfLoad/bin中調試/ SwfLoad.swf
無法訪問由http://mydomain.com/zoom_assets/GroundTiles.swf擁有的LoaderInfo.applicationDomain。
這裏是我的crossdomain.xml:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
這裏是我的ActionScript代碼:
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.system.Security;
public class SwfLoad extends Sprite
{
public function SwfLoad()
{
Security.loadPolicyFile("http://mydomain.com/crossdomain.xml");
var loader:Loader = new Loader();
var url:String = "http://mydomain.com/zoom_assets/GroundTiles.swf";
var request:URLRequest = new URLRequest(url);
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(e:Event):void {
try {
var className:String = "MGroundTileInsideZ1";
var appDomain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain;
var cl:Class = appDomain.getDefinition(className) as Class;
//var cl:Class = getDefinitionByName(className) as Class;
}
catch (e:Error) {
trace("loading of class failed. class name is " + className + " failure error is " + e);
}
});
loader.load(request,context);
}
}
}
我只是測試它與Flash Builder 4,SDK 4.1和Flash Player 10.1一起工作。 – 2010-10-20 07:37:49
我使用Flex Builder 3,SDK 3.0和Flash Player 10.1的工作,但它不工作。它只有在我這樣做後才起作用:context.securityDomain = SecurityDomain.currentDomain; – dharm0us 2010-10-20 07:54:09