首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex:从flex swf加载xml

Flex:从flex swf加载xml
EN

Stack Overflow用户
提问于 2009-08-10 17:21:00
回答 3查看 1.9K关注 0票数 0

我正在使用flex创建一个(桌面)应用程序,但AIR不是一个选项。(我听说你需要air-installer来播放.exe)我的flex应用需要加载一个php生成的xml,但是当你导出一个发布版本时,它必须从swf文件中运行。

在本地主机上测试我的flex应用程序时,一切正常。xml被加载,我得到了数据。然而,在我导出了一个发布版本,并启动了.swf之后,我得到了安全漏洞(沙箱),说它不能从网页加载xml。

有谁知道解决这个问题的方法吗?有人知道air安装程序是否真的是启动.exe所必需的吗?(我只有一台mac电脑)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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文件的概念。下面是一个允许从任何域连接到资源的示例:

代码语言:javascript
复制
<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" />
    <site-control permitted-cross-domain-policies="master-only"/>
</cross-domain-policy>

这在你的情况下是可行的。

票数 2
EN

Stack Overflow用户

发布于 2009-08-10 20:38:40

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

  • 第一个,在上面的答案中提到的是确保你的php页面可以被访问。这是通过crossdomain.xml策略文件解决的。
  • 第二个问题源于它的运行方式--本地。Flash有四个沙箱(远程沙箱、文件系统本地沙箱、网络本地沙箱和可信沙箱)。默认情况下,所有来自web的swfs都放在远程沙箱中;那些在本地运行的swfs缺省为本地文件系统==无网络调用。

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

把你的swf放在可信的沙箱中,在那里它可以从本地系统和远程服务器加载数据,这就有点棘手了--你需要让安装程序修改一些配置文件。

票数 1
EN

Stack Overflow用户

发布于 2009-08-10 17:43:25

您将需要添加一个跨域策略文件,它只是一小段xml代码,说明允许flex与远程实体对话

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1256108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档