我在同一台服务器上托管一个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”
时,一切都有效我希望有人可以帮助我
塞巴斯蒂安
答案 0 :(得分:4)
如果你的Flex应用程序在服务器上使用ip 5.6.7.8,你需要在1.2.3.4服务器的交叉域中允许那个 ip。这是从5.6.7.8开始运行的Flash,知道1.2.3.4允许来自该特定地址的连接。
如果你仍然有同样的问题,快速找出正在发生的事情是使用调试代理(我喜欢Charles)。这样你就会看到flash对crossdomain.xml的请求以及响应的样子,很可能是请求发送到了你没想到的地方,或者服务器以某种方式混淆了它。
答案 1 :(得分:1)
您使用的是套接字吗?
在这种情况下,您需要使用现有的Java Server或独立的Java Server来提供策略文件。
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
答案 2 :(得分:1)
1.2.3.4是否代表IP地址? 如果是这样,我认为你必须在这里使用域名而不是IP地址,否则你可能在同一台服务器上有多个域并绕过相同的域检查。