0

我实现了一个 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.

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

或者是否有一种好方法可以在不加载 .wsdl 文件的情况下定义一个简单的 web 服务方法(如 stringResult = command (stringSessionId, stringCommand, stringParams, stringResult))?如果我有这种可能性,我就不必偶然发现那个沙盒 - 东西。

任何帮助表示赞赏。

4

3 回答 3

1

跨域策略文件不存在。它应该在这个位置。您可以从本地机器加载“wsdl”,因为您的沙箱是本地受信任的(即最方便的沙箱)。因此,除非在所需位置有跨域策略文件,否则目前我看不到任何方法可以在闪存中完成此操作。
但是您可以尝试使用服务器端代理方法来加载 wsdl。

于 2009-11-10T05:56:02.357 回答
0

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

以下是一些示例策略文件:YouTubeTwitter。查看政策文件上的Adob​​e链接以了解更多信息。

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

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

于 2009-11-10T06:03:35.337 回答
0

感谢您的评论。这里真正的问题是,gSoap - 生成的 wsdl - 文件试图在所有地方“访问”这些域,因此跨域 - 东西不在我的手中。无论如何,我现在通过手动编写 wsdl 解决了这个问题,没有所有 wsdl gsoap 巨型膨胀,所以它只是访问 w3c.* 域,它们显然是跨域的。

于 2009-11-11T15:19:33.607 回答