问题描述
|
当我尝试从flex进行Java调用时,出现以下错误。
[RPC Fault faultString = \“发送失败\”
faultCode = \“ Client.Error.MessageSend \”
faultDetail =“ \” Channel.Security.Error错误
错误#2048:违反安全沙箱:
\'http://sample.com/sample.swf \'不能
从中加载数据
http:// sample:8080 / messagebroker / amf。
网址:
\'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。
有人在托管Flex网站时遇到过类似的问题吗?
解决方法
看看您有一个不同的域http://sample.com/和http:// sample:8080 /。
, 游戏有点晚了,但还有一些其他项目需要检查。
您说过您可以运行tomcat的本地实例。我将假设您以本地主机而不是IP地址(和/或计算机名称)调用此服务。如果您正在运行Flex应用程序,但尚未更改运行配置,则说明您是从运行到本地主机。离开locahost域后,请确保进入运行配置(“运行”或“调试”按钮旁边的小向下箭头),然后输入使用IP地址运行应用程序的本地路径。现在,您将运行应用程序的IP地址到服务的IP地址(或任何非localhost)。这通常可以解决问题。
接下来,确保您的crossdomain.xml文件位于服务器的ROOT上。您应该能够浏览到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>