我想知道是否有人解决了类似的问题。
我在网站A上有一个网页,它有一个从网站B提供的嵌入式swf。 当通过站点B上的文件夹中的URLLoader尝试txt文件时,swf会出现安全沙箱错误。
我在site-B上有一个跨域策略(目前设置为)。 我在这里错过了什么?我在哪里可以放置文本文件以便swf可以加载它? 我可以访问A站点和B站点。
任何帮助非常感谢
答案 0 :(得分:1)
这取决于你如何编译swf。有一个安全Sanbox问题。在Essential Actionscript 3.0中有一整章关于安全性,但我会尽量保持简短。
使用Flash IDE,您有两个“安全选项” 你的swf有权在本地加载剪辑(来自同一个域), 来自网络(其他领域)
假设swfA是网站上的swf,而swfB是网站上的swf-B
首先,尝试将LoaderContext设置为用于swfB的加载器
e.g。
//1st param(true) in LoaderContext constructor means always check for policy files
var swfBLoaderContext:LoaderContext = new LoaderContext(true);
var swfBLoader:Loader = new Loader();
swfBLoader.contentLoaderInfo.addEventListener(Event.INIT, swfBLoaded);
swfBLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfBIOError);
swfBLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, swfBSecurityError);
swfBLoader.load(new URLRequest('http://siteb.com/b.swf',swfBLoaderContext);
function swfBLoaded(event:Event):void{
trace(event.target.content);
}
function swfBIOError(event:IOErrorEvent):void{
trace(event);
}
function swfBSecurityError(event:SecurityErrorEvent):void{
trace(event);
}
然后在“文档设置”中更改本地播放安全性以访问网络文件。
alt text http://www.adobe.com/devnet/flash/articles/local_network_playback/fig01.jpg
感谢Adobe的图片。
有关详细信息,请参阅this article on devnet。
古德勒克。