2011-05-30 266 views
0

当我尝试从flex进行java调用时出现以下错误。错误#2048安全沙箱违规 - 无法加载数据

[RPC故障faultString = “发送失败”
的faultcode = “Client.Error.MessageSend”
faultDetail =“Channel.Security.Error错误
错误#2048:安全沙箱冲突: “HTTP ://sample.com/sample.swf”不能从 http://sample:8080/messagebroker/amf URL 载荷数据: 的 'http://样品:8080/messagebroker/AMF'“]

在i Trie树d在我的本地tomcat服务器上运行相同,这是工作正常。但是,当作为一个网站托管,我得到这个错误。我尝试将crossdomain.xml文件放在根目录中。但错误永远不会消失。跨域文件如下所示。

<cross-domain-policy> 

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

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

<cross-domain-policy/> 

日志说这

连接到 的 'http://样品:8080/messagebroker/AMF' 暂停 - 不从 http://sample.com/sample.swf允许的。

有没有人在托管flex站点时遇到过类似的问题?

+0

你可以从你的'http:// sample:8080/crossdomain.xml'下载一些东西吗? – Constantiner 2011-05-30 21:05:58

+0

我的网站托管为“sample.com”。当我尝试“sample.com/crossdomain.xml,我能够查看我放置的跨域文件。” sudar 2011-05-30 21:23:03

+0

我正在谈论端口8080. – Constantiner 2011-05-30 21:24:55

回答

1

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

+0

我试着将remoteobject的端点改为http://sample.com/messagebroker/amf,但启动时会抛出下面的错误 [RPC错误faultString =“发送失败”faultCode =“Client.Error.MessageSend”faultDetail =“Channel.Connect.Failed error NetConnection.Call.Failed:HTTP:Status 404:url:'http://sample.com/messagebroker/amf '']' – sudar 2011-05-30 21:18:49

+0

你的Tomcat在生产中运行什么端口? – Constantiner 2011-05-30 21:21:34

+0

我不确定。我是虚拟主机的新手。我只是在一个付费托管网站托管。我试着用端口'80'和'8080'猜测它是默认的。两个都给了我从未摆脱过的安全沙箱违规错误。当使用我的本地tomcat服务器进行测试时,它工作得很好。 – sudar 2011-05-30 21:27:58

0

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

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

接下来,确保您的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> 
相关问题