1

我在同一台服务器上托管 java 服务和 flex 应用程序。flex 应用程序访问 java 服务。当 flex 应用程序加载时,我收到一个安全错误,这怎么会发生?我认为在同一台服务器上托管时我不需要 crossdomain.xml。

我的 flex 应用程序通过向 1.2.3.4:9000/service 发送调用的 http 服务获取数据,flex 应用程序本身位于 5.6.7.8/test.swf,我的 crossdomain.xml 如下所示

<?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="5.6.7.8" to-ports="*"  />
</cross-domain-policy>

可从 1.2.3.4:9000/crossdomain.xml 访问它。请注意,当我使用 domain="*" 而不是 domain="1.2.3.4" 时,一切正常

我希望有一个人可以帮助我

塞巴斯蒂安

4

3 回答 3

4

如果您的 Flex 应用程序位于 IP 为 5.6.7.8 的服务器上,则您需要在 1.2.3.4 服务器的跨域中允许IP。这让从 5.6.7.8 运行的 Flash 知道 1.2.3.4 允许来自该特定地址的连接。

如果你仍然有同样的问题,一个快速找出发生了什么的方法是使用调试代理(我喜欢Charles)。这样,您将看到对 crossdomain.xml 的 flash 请求以及响应的样子,很可能请求到达了您没有预料到的地方,或者服务器以某种方式将其弄乱了。

于 2009-09-02T13:29:12.823 回答
1

你在使用套接字吗?

在这种情况下,您需要使用现有的 Java 服务器或独立的 Java 服务器来提供策略文件。

http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

于 2009-09-02T09:47:59.133 回答
1

1.2.3.4 是否代表 IP 地址?如果是这样,我相信您必须在这里使用域名而不是 IP 地址,否则您可能在同一台服务器上有多个域并绕过相同的域检查。

于 2009-09-02T11:29:43.357 回答