我正在尝试将头像加载到 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"));

但我仍然收到此错误:

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

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

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

编辑:以下代码有效,感谢 Jacob

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

笔记:不要尝试直接访问 Event.COMPLETE 中的内容

有帮助吗?

解决方案

我通过使用解决了类似的问题 加载上下文. 。以下是如何执行此操作的示例:

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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top