从file:///运行SWF,而无需用户更改其Flash Player安全设置

时间:2008-10-03 03:35:31

标签: flex flash actionscript-3

我有一个Flex应用程序可以进行大量的网络流量,它使用ExternalInterface进行一些javascript调用(对于SCORM),它加载XML文件,图像,视频,音频,它有一系列模块,它可以在某个时候加载......

问题是 - 我们现在要求用户需要在未连接到互联网的计算机上本地运行此内容(这意味着他们无法连接到Adobe的站点来更改其安全设置。)正如您可以想象的那样,当用户将html页面上的点击加倍以启动此事时,他们会看到一个安全警告,swf正在尝试与其他域进行通信而不是它所在的域。我们无法将其包装在一个exe或AIR应用程序,所以我除非有某种方法来调整一些模糊的安全设置,我们可能会被冲洗。有什么想法吗?

6 个答案:

答案 0 :(得分:6)

您要做的就是AIR解决的问题。你应该试一试,这并不难。如果你真的真的不能使用AIR(你没有指定原因,所以我认为这只是因为你不想学习新系统),那么修改安全配置文件就可以解决问题。

基本上您需要做的是在“Global FlashPlayerTrust”目录中创建一个“信任”文件。这可以由您的安装程序(将所有javascript,SWF,html等文件安装到本地计算机上)完成。如果目录不存在,则应创建该目录。每个操作系统的目录是:

  • Windows - %WINDIR%\ System32 \ Macromed \ Flash \ FlashPlayerTrust
  • Mac - / Library / Application Support / Macromedia / FlashPlayerTrust
  • Linux - / etc / adobe / FlashPlayerTrust

接下来,您需要创建信任文件。您可以将其命名为任何名称,因此请选择一个不太可能与其他名称冲突的唯一名称。像CompanyName.cfg之类的东西。它是一个文本文件,每行一个路径。您可以一次信任一个SWF,也可以信任整个目录。例如:

C:\Program Files\MyCompany\CoolApp
C:\Program Files\MyCompany\OtherApp\Main.swf

要测试它是否正常工作,您可以在Flash动画中查看System.security.sandboxType(ActionScript 1或2)或Security.sandboxType(ActionScript 3)。它的值应为“localTrusted

答案 1 :(得分:0)

我毫不犹豫地说“你不能这样做”,但根据我的经验,你无法做你所描述的事情。任何人,如果我错了,我很想知道这个伎俩。

答案 2 :(得分:0)

很抱歉,我实际上没有试过这个,看它是否有效...但是......

this文件的第20页(和/或第26页)可能有所帮助。该文档的引用为here。简而言之,它描述了包含cfg文件的目录,这些文件又包含磁盘上应该被视为可信任位置的列表。然后,应用程序的安装程序将负责在所需位置(全局或安装用户)创建适当的.cfg文件。

答案 3 :(得分:0)

简短的回答是,如果您的swf使用use-network编译为true,则无法正常工作。

是否可以将use-network的版本编译为false?或者它是否在内联网上运行,该内联网已从互联网关闭并仍与LMS通信?

答案 4 :(得分:0)

有可能。请知道您从主swf调用的swfs是否启用了“仅限本地文件”属性。

答案 5 :(得分:-1)

您是否尝试使用以下命令指定授权域名:

System.security.allowDomain("www.yourdomain.com");