Flash Crossdomain.xml问题

St.*_*son 2 flash gravatar crossdomain.xml actionscript-3

我正在尝试将Gravatars加载到Flash中.幸运的是,他们提供了一个crossdomain.xml文件http://en.gravatar.com/avatar/crossdomain.xml

我的代码:

Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var loader:Loader = new Loader();
loader.load(new URLRequest("http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon"));
Run Code Online (Sandbox Code Playgroud)

但我仍然收到这个错误:

SecurityError:错误#2123:安全沙箱违规:LoaderInfo.content:[...]无法访问http://en.gravatar.com/avatar/97fbce86a5bbc520450168603172cd9e?s=35&d=identicon.没有授予访问权限的策略文
at flash.display :: LoaderInfo /获取
PiecePlayerSmall/onLoadComplete()上的内容()

我还监控了Flash文件发送的流量.它要求:

任何有关使其工作并减少对gravatar.com的请求数量的建议.

编辑: 以下代码工作,感谢雅各布

Security.loadPolicyFile("http://en.gravatar.com/avatar/crossdomain.xml");
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(
    "http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon");
var loader:Loader = new Loader();
loader.load(request, context);
this.addChild(loader);
Run Code Online (Sandbox Code Playgroud)

注意:请勿尝试直接在Event.COMPLETE中访问内容

Jac*_*cob 7

我使用LoaderContext解决了类似的问题.以下是如何执行此操作的示例:

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var request:URLRequest = new URLRequest(
    "http://en.gravatar.com/avatar/" + gravatar + "?s=35&d=identicon");
var loader:Loader = new Loader();
loader.load(request, context);
Run Code Online (Sandbox Code Playgroud)