我正在使用flex创建一个(桌面)应用程序,但AIR不是一个选项。(我听说你需要air-installer来播放.exe)我的flex应用需要加载一个php生成的xml,但是当你导出一个发布版本时,它必须从swf文件中运行。
在本地主机上测试我的flex应用程序时,一切正常。xml被加载,我得到了数据。然而,在我导出了一个发布版本,并启动了.swf之后,我得到了安全漏洞(沙箱),说它不能从网页加载xml。
有谁知道解决这个问题的方法吗?有人知道air安装程序是否真的是启动.exe所必需的吗?(我只有一台mac电脑)
发布于 2009-08-10 18:10:53
由于Flash播放器的安全限制,您在沙箱中运行。如果启动SWF应用程序,它会有一个类似于file:///path/to/my/app,的URL,这会把它放在一个本地文件sadbox中(这是运行swf限制最多的地方)。AIR还为您提供了一个本地文件系统沙箱,但您可以访问本地文件并保存到磁盘。如果您正在从http://example.com运行swf,那么您处于example.com上下文中,并且可以从该域加载内容。如果需要从另一个域加载内容,则需要内容/服务所在的另一个域上的crossdomain.xml策略文件。
alt text http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security/fig01.gif
This article explains,详细介绍了crossdomain.xml文件的概念。下面是一个允许从任何域连接到资源的示例:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
<site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>这在你的情况下是可行的。
发布于 2009-08-10 20:38:40
由于Flex将从本地文件系统启动-通过file://处理程序或类似于c:\mypp\mySwf.swf,因此实际上有两个安全组件需要注意:
您可能想要更改它被推入的沙箱。对于具有文件系统/网络的本地,您可以简单地在Flex编译器中调整一个标志(例如,通过Flex Builder选项)。但有一件事需要注意:您只能有一个-从本地系统或从网络加载数据。两者都不能同时以这种方式实现。
把你的swf放在可信的沙箱中,在那里它可以从本地系统和远程服务器加载数据,这就有点棘手了--你需要让安装程序修改一些配置文件。
发布于 2009-08-10 17:43:25
您将需要添加一个跨域策略文件,它只是一小段xml代码,说明允许flex与远程实体对话
https://stackoverflow.com/questions/1256108
复制相似问题