繁体   English   中英

Flex:从Flex SWF加载xml

[英]Flex: load xml from flex swf

我正在使用flex创建一个(桌面)应用程序,但是AIR不是一个选择。 (我听说您需要空气安装程序才能播放.exe)我的flex应用程序需要加载php生成的xml,但是当您导出发行版时,它必须从swf文件运行。

在本地主机上测试我的flex应用程序时,一切都很好。 xml已加载,我得到了数据。 但是,在我导出发行版本并启动.swf之后,我得到了安全漏洞(沙盒),说它无法从网页加载xml。

有人知道解决这个问题的方法吗? 有人知道空中安装程序是否真的需要启动.exe吗? (我只有Mac)

由于Flash Player的安全性限制,您正在沙箱中运行。 如果启动应用程序SWF,它将有一个类似于file:/// path / to / my / app的URL,它将其放置在本地文件sadbox中(这是运行swf的限制性最强的位置)。 AIR还为您提供了一个本地文件系统沙箱,但是您可以访问本地文件并将其保存到磁盘。 如果您从http://example.com运行swf,则位于example.com上下文广告中的广告可以加载该域中的内容。 如果需要从另一个域加载内容,则将在内容/服务所在的另一个域上需要一个crossdomain.xml策略文件。

替代文字http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security/fig01.gif

本文详细解释了crossdomain.xml文件的概念。 这是一个允许从ANY域到资源的连接的示例:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" />
    <site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>

这将在您的情况下工作。

由于Flex应用程序将通过文件://处理程序或类似于c:\\ mypp \\ mySwf.swf从本地文件系统启动,因此实际上有两个安全组件需要您注意:

  • 首先,如上述答案所述,是确保可以联系您的php页面。 这可以通过crossdomain.xml策略文件解决。

  • 第二个问题来自它的运行方式-本地化。 Flash具有四个沙箱(远程,文件系统本地,网络本地和受信任)。 默认情况下,来自网络的所有swf都放置在远程沙箱中; 本地运行的文件默认为本地文件系统==没有网络调用。

您可能想更改它被推入的沙箱。对于具有文件系统/网络的本地,您可以简单地在Flex编译器中调整一个标志(例如,通过Flex Builder选项)。 但是要注意一件事:您只能拥有一个-从本地系统或从网络加载数据。 这两种方式无法同时实现。

将swf放到受信任的沙箱中,可以在其中从本地系统和远程服务器加载数据,这比较棘手-您需要让安装程序修改一些配置文件。

您将需要添加一个跨域策略文件,其中包含一小段xml,表示允许flex与该远程实体通信

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM