从file:///运行SWF,而无需用户更改其Flash Player安全设置
我有一个Flex应用程序,它可以处理相当数量的网络流量,它使用ExternalInterface进行一些javascript调用(用于SCORM),它加载XML文件,图像,视频,音频,并且具有一系列可以在以下位置加载的模块某点...
因此,问题在于我们现在有一个要求,即用户需要在未连接到互联网的计算机上本地运行此内容(这意味着他们无法连接到Adobe的站点来更改其安全设置。) ,当用户双击html页面以启动该程序时,会收到一个安全警告,警告该swf正在尝试与所在域以外的其他域进行通信。我们无法将其包装在exe或者AIR应用程序,所以除非有某种方法可以调整一些晦涩的安全设置,否则我们可能会被抽空。有任何想法吗?
解决方案
我们是否尝试通过以下方式指定授权域:
System.security.allowDomain("www.yourdomain.com");
我犹豫地说"我们做不到",但是根据我的经验,无法做我们所描述的事情。任何人,如果我错了,我都想知道这个窍门。
抱歉,我实际上没有尝试过看看是否可行...但是...
本文档的第20页(和/或者26)可能会有所帮助。此处引用了该文档。简而言之,它描述了包含cfg文件的目录,而这些文件又包含应被视为受信任的磁盘上位置的列表。然后,该应用程序的安装程序将负责在所需位置(全局或者安装用户)中创建适当的.cfg文件。
简短的答案是,如果将swf用use-network编译为true,它将无法正常工作。
是否可以将use-network的版本编译为false?还是它在与Internet隔离并且仍与LMS通信的Intranet上运行?
我们要尝试做的正是AIR解决的问题。我们应该真正尝试一下,拿起来并不难。如果我们确实不能使用AIR(我们没有指定原因,所以我认为这仅仅是因为我们不想学习新系统),那么修改安全性配置文件将解决此问题。
基本上,我们需要做的是在" Global FlashPlayerTrust"目录中创建一个"信任"文件。这可以由安装程序完成(将所有javascript,SWF,html等文件安装到本地计算机上)。如果目录不存在,则应创建该目录。每个操作系统的目录为:
- Windows-%WINDIR%\ System32 \ Macromed \ Flash \ FlashPlayerTrust
- Mac-/图书馆/应用程序支持/ 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"
有可能的。请检查我们从主SWF呼叫的SWF是否启用了"仅访问本地文件"属性。