【问题标题】:Same domain but security error域相同但安全错误
【发布时间】:2009-09-02 09:42:44
【问题描述】:

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

我的 flex 应用程序通过一个 http 服务获取数据,该服务向 1.2.3.4:9000/service 发送调用,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"

时,一切正常

希望有人能帮助我

塞巴斯蒂安

【问题讨论】:

  • 什么样的安全错误?可以发一下详细信息吗?
  • Destination: DefaultHttp 我从 FaultEvent 的详细信息中得到的还是什么意思?

标签: apache-flex security actionscript crossdomain.xml


【解决方案1】:

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

如果您仍然遇到同样的问题,一个快速了解发生了什么的方法是使用调试代理(我喜欢Charles)。这样你会看到 flash 对 crossdomain.xml 的请求以及响应的样子,很可能请求到达了你没想到的地方,或者服务器以某种方式把它搞砸了。

【讨论】:

  • 这是正确的。默认情况下,从域 X 加载的 SWF 只能访问在域 X 中托管的服务。如果 SWF 想要访问来自域 Y 的服务,那么它必须有一个 crossdomain.xml 文件来授予对域 X 的访问权限。
  • 我在回答中添加了更多建议
【解决方案2】:

你在使用套接字吗?

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

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

【讨论】:

  • 我通过服务器提供策略文件。当我将 allow_site_access 设置为 * 时,我将我的服务托管在 1.2.3.4:9000/service 和 1.2.3.4:9000/crossdomain.xml 下的跨域文件,一切正常,但是当我将域设置为 1.2.3.4 时发生错误
【解决方案3】:

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

【讨论】:

  • 但是我可以直接用这个地址访问服务
猜你喜欢
  • 2014-07-20
  • 2016-11-04
  • 2010-11-23
  • 2010-10-25
  • 2010-09-30
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多