0

当我尝试从 flex 进行 java 调用时,出现以下错误。

[RPC 故障 faultString="Send failed"
faultCode="Client.Error.MessageSend"
faultDetail="Channel.Security.Error 错误
错误 #2048:安全沙箱违规:'http://sample.com/sample.swf' 无法加载来自 http://sample:8080/messagebroker/amf的数据。url : 'http://sample:8080/messagebroker/amf'"]

当我尝试在我的本地 tomcat 服务器上运行它时,它工作正常。但是当作为站点托管时,我收到了这个错误。我也尝试将 crossdomain.xml 文件放在根目录中。但错误永远不会消失。跨域文件如下所示。

<cross-domain-policy>

<site-control permitted-cross-domain-policies="all" />

<allow-access-from domain="*"  to-ports="*"/> 

<cross-domain-policy/>

日志这样说

与“http://sample:8080/messagebroker/amf”的连接停止 - 不允许来自 http://sample.com/sample.swf

有没有人在托管弹性网站时遇到过类似的问题?

4

2 回答 2

1

看看你有不同的域http://sample.com/和http://sample: 8080 /

于 2011-05-30T21:07:41.110 回答
0

游戏有点晚了,但还有一些其他项目需要检查。

你说你可以运行本地的tomcat实例。我将假设您将这个服务作为 localhost 调用,而不是通过 IP 地址(和/或计算机名称)。如果您正在运行一个 flex 应用程序并且您没有更改您的运行配置,那么您正在从 localhost 运行。离开 locahost 域后,确保进入运行配置(运行或调试按钮旁边的小向下箭头),并使用 IP 地址输入运行应用程序的本地路径。现在,您将运行应用程序的 IP 地址到服务的 IP 地址(或任何不是 localhost)。这通常会解决问题。

接下来,确保您的 crossdomain.xml 文件位于服务器的根目录。您应该能够浏览到http://yourhostname/crossdomain.xml。不应该涉及任何路径。crossdomain.xml 应该位于托管服务的根级别。

可能还需要将 Flex 工作区的本地实例设置为 Web 服务器(IIS、tomcat)下的虚拟目录。在我的情况下,我可以浏览到 127.0.0.1/workspace/someflexapp/bin-debug/projectname.html 并且 flex 应用程序将运行。

经历了很多次并按照上述步骤始终可以解决问题。

您可以使用如下所示的 crossdomain.xml 文件来开放访问 flex 将从 web/soap 服务请求的大多数内容。

<cross-domain-policy>
   <site-control permitted-cross-domain-policies="all"/>
   <allow-access-from domain="*" to-ports="*"/>
   <allow-http-request-headers-from domain="*" headers="*"/>
   <allow-http-request-headers-from domain="*"/>
</cross-domain-policy>
于 2012-02-07T20:48:38.673 回答