【发布时间】:2009-08-28 06:05:55
【问题描述】:
我想知道是否有人解决了类似的问题。
我在站点 A 上有一个网页,其中嵌入了站点 B 提供的 swf。 当尝试通过 URLLoader 从站点 B 上的文件夹加载 txt 文件时,swf 会出现安全沙箱错误。
我在站点 B 上有一个跨域策略(当前设置为 )。 我在这里错过了什么吗?我可以将文本文件放在哪里,以便 swf 可以加载它? 我可以访问站点 A 和站点 B。
非常感谢任何帮助
【问题讨论】:
标签: flash
我想知道是否有人解决了类似的问题。
我在站点 A 上有一个网页,其中嵌入了站点 B 提供的 swf。 当尝试通过 URLLoader 从站点 B 上的文件夹加载 txt 文件时,swf 会出现安全沙箱错误。
我在站点 B 上有一个跨域策略(当前设置为 )。 我在这里错过了什么吗?我可以将文本文件放在哪里,以便 swf 可以加载它? 我可以访问站点 A 和站点 B。
非常感谢任何帮助
【问题讨论】:
标签: flash
这取决于你如何编译你的 swf。存在安全 Sanbox 问题。 Essential Actionscript 3.0 中有一整章是关于安全性的,但我会尽量保持简短。
使用 Flash IDE,您有两个“安全选项” 要么您的 swf 有权在本地加载剪辑(来自同一域), 来自网络(其他域)
假设 swfA 是站点 A 上的 swf,而 swfB 是站点 B 上的 swf
首先,尝试将 LoaderContext 设置为用于 swfB 的加载器
例如
//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。
祝你好运。
【讨论】: