2009-08-05 18 views

回答

4

在很多情况下,由于与crossdomain.xml关联的安全模型,这将不起作用。

http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html

例如说,我有了一个服务调用一个Flex应用程序,并登录到我的后端数据库(也许是PHP和MySQL)。除非我在crossdomain.xml策略文件中明确启用它,否则应用程序将无法与我的服务器通信,除非swf文件直接从我的域加载。如果应用程序是本地的,它会看起来像我的服务器像localhost试图通过flex应用程序访问我的后端。因此,默认情况下,除非在crossdomain.xml中放置了明确的规则以允许从本地主机访问,否则这将不起作用。同样,某人不能简单地将swf放在另一台服务器上,并尝试从我的服务器进行访问,除非将该远程服务器添加到crossdomain.xml策略中。

所以回到你的问题。显然,如果您的flex应用程序非常简单并且不尝试对服务器进行服务调用,则此crossDomain.xml内容并不适用。例如,如果您有简单的游戏,只需在弹性游戏中加载和播放而无需额外的服务器调用。

如果你想保护你的应用程序,你可以在启动顺序中有一个基本的“电话回家”程序,这个程序会对你的网站进行非常简单的服务器调用。它不一定非常复杂,在您的应用程序启动时只需要一个往返服务电话。也许检查存储在PHP端的变量中的简单键或字符串,并且除非该键有效,否则不要让flex应用程序运行。你可以在动作中硬编码预期的键。或者可能有一个基本的记录器来跟踪应用程序启动的次数并将计数存储在数据库中或其他东西。主要的是不要让应用程序完全启动,直到对服务器的这个请求返回了有效的结果。

如果你有这个地方,那么crossdomain.xml策略将会启动,如果有人下载你的SWF,它不应该工作,因为它会尝试从本地主机到你的服务器进行调用。或者,如果他们窃取您的应用程序并将其托管在他们的网站上,它也不应该起作用。

0

请检查LiveDocs上的flash.System.Capabilities.playerType。

2

最简单的办法或许金正日检查的

Application.application.loaderInfo.url 

在应用程序启动(例如在applicationComplete事件)的值,并与您的网站域名相匹配。

相关问题