2009-08-28 59 views
0

我想知道是否有任何解决了类似的东西。沙箱侵犯 - 在Flash Player中 - 跨域问题?

我在网站-A上有一个网站,它具有从网站B提供的嵌入式swf。 swf在通过URLLoader从站点B上的文件夹尝试访问txt文件时出现安全沙箱错误。

我在站点B上有一个跨域策略(当前设置为)。 我在这里错过了什么?我可以在哪里放置文本文件,以便swf可以加载它? 我同时访问网站A和B.

任何帮助非常赞赏

回答

1

这取决于你如何编译你的SWF。有一个安全Sanbox问题。关于安全性的Essential Actionscript 3.0有一整章,但我会尽量保持简短。

使用Flash IDE中,你有两个“安全选项” 或者您的SWF有权加载剪辑本地(来自同一个域), 无论是从网络(其他域)

比方说swfA是SWF现场-A和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

Goodluck。