3

我们正在创建一个使用动态加载到主 swf 中的模块的应用程序。我们遇到的问题是,当我们在本地调试主应用程序时,我们无法加载位于测试服务器上的模块。我们得到的错误是“SWF 不是可加载模块”。

我查了一下,发现我们需要服务器上的一个跨域文件,该文件授予从外部位置加载模块的权限。所以我们创建了一个简单的跨域文件并将其放在服务器上,但这似乎没有帮助。

这是跨域文件:

<cross-domain-policy>
  <allow-access-from domain="*"/>
</cross-domain-policy>

我们通过 ModuleLoader 类和所有默认设置加载模块,没有自定义应用程序域等。当我们将主 swf 部署到服务器上时,我们能够毫无问题地加载模块。

有什么线索吗?跨域文件是否可能缺少某些设置?

更新:似乎外部模块已成功加载(我可以在我的 HTTP 嗅探器中验证)但在主应用程序中加载时无法初始化。错误仍然是“SWF 不是可加载模块)

4

5 回答 5

3

这是 Adob​​e JIRA 提出的建议:http: //bugs.adobe.com/jira/browse/SDK-15393

于 2009-05-12T15:25:40.893 回答
1

我认为 Adob​​e 尝试访问端口 843 上的跨域文件,如果它无法连接/找到该端口上的文件,它会尝试您尝试连接的端口(如果是 http,则可能是 80)。不确定,但您可能需要检查以确保您的服务器允许访问该文件。

另外值得一提的是,您应该允许完全访问本地 swf 应用程序所在的目录。使用 Adob​​e 设置管理器执行此操作:http: //www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

作为旁注,我认为设置管理器是 Flash 生态系统中最糟糕的 UI 暴行之一。只是他们需要在经理下方的文本中澄清这实际上不是屏幕截图的事实真的很重要。

于 2009-04-21T13:48:25.803 回答
1

我同意这可能是本地 SWF 和远程 SWF 之间的问题。尝试将本地文件上传到服务器(您有权访问的任何服务器),或者,如果您有本地 Apache 或 IIS 正在运行,请尝试使用http://localhost/访问该 SWF 。如果可行,我们就会知道问题出在本地文件和远程文件之间。如果不是,则问题出在 crossdomain.xml 或您的代码中,这不太可能,但我们现在不应该排除它。如果您确定问题出在使用本地 SWF,请在设置管理器中添加本地文件夹(请参阅 macke 的帖子)

于 2009-04-21T14:23:46.683 回答
1

这是根据 Adob​​e 的建议捆绑在一起的可供使用的解决方案。

http://aaronhardy.com/flex/loading-a-remote-module-into-a-local-app/

于 2009-08-26T01:19:26.057 回答
0

看起来类似于我的跨域

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

那是在您的本地服务器根目录上,对吗?

你检查过你的目录权限吗?

于 2009-04-21T13:42:50.777 回答