使用http://schemas.xmlsoap.org/soap/encoding/ as3沙箱安全违规

时间:2009-11-10 01:08:00

标签: actionscript-3 security wsdl sandbox crossdomain.xml

我实现了一个gSoap c ++ webservice-server,可以被Flash访问(as3)只要我在本地测试.swf,.wsdl就可以正常加载,并且通信正常,即使服务器运行在已经是外部IP了。

但是,当我把那个.swf放在网上的那一刻 - 它出现了沙盒安全违规,一直在哭泣标准 - 这样的架构:

Error: [strict] Ignoring policy file at http://schemas.xmlsoap.org/crossdomain.xml 
due to incorrect syntax.  See http://www.adobe.com/go/strict_policy_files to fix this 
problem.

*** Security Sandbox Violation ***
Connection to http://schemas.xmlsoap.org/soap/encoding/ halted - not permitted from 
http://mydomain.com/main.swf
Error: Request for resource at http://schemas.xmlsoap.org/soap/encoding/ by requestor  
from http://mydomain.com/main.swf is denied due to lack of policy file 
permissions.

有人可以帮我解决这个问题吗?

或者可能有一种很好的方法来定义一个简单的webservice方法(比如stringResult = 命令(stringSessionId,stringCommand,stringParams,stringResult))无需加载 .wsdl - 文件?如果我有这种可能性,我不必绊倒沙盒 - 东西。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

缺少跨域政策文件。它应该在this位置。您可以从本地计算机加载“wsdl”,因为您的沙箱是本地受信任的(即最方便的沙箱)。因此,除非在所需位置存在跨域策略文件,否则目前我无法在Flash中看到任何方法 但您可以尝试Server Side Proxy Method来加载wsdl。

答案 1 :(得分:0)

Flash不允许从托管SWF的域以外的域加载内容,除非这些域允许您这样做。远程域可以选择允许域中的SWF使用托管在其Web根目录下的crossdomain.xml策略文件从中加载内容。

以下是一些示例政策文件:YouTubeTwitter。检查策略文件的Adobe链接以了解更多信息。

错误消息“由于语法不正确而忽略”表示策略文件存在但没有格式良好或存在一些语法错误。但我在http://schemas.xmlsoap.org/crossdomain.xml找不到任何内容。

您的网络服务托管在哪里?你想从http://schemas.xmlsoap.org/soap/encoding/加载什么?

答案 2 :(得分:0)

感谢您的评论。这里真正的问题是,gSoap生成的wsdl文件试图在整个地方“访问”这些域,因此跨域 - 东西不在我手中。无论如何我现在解决了这个问题,手工编写wsdl没有所有wsdl gsoap mega bloating,所以它只是访问w3c。*域并且它们显然是交叉的 右。