繁体   English   中英

通过flex进行安全的Web套接字连接会产生安全沙箱冲突

[英]secure web socket connection through flex generates a Security sandbox violation

我正在尝试使用flex连接到安全的Web套接字(wss://),并且遇到了“安全”沙箱冲突错误。

完整的错误消息如下:

*** Security Sandbox Violation ***
Connection to foo.bar:8443 halted - not permitted from https://foo.bar:8443/foo/foo-html/Main.swf
Security Error: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Security sandbox violation: https://foo.bar.com:8443/foo/foo-html/Main.swf cannot load data from come2play.xpogames.com:8443."]

连接失败:错误#2048:违反安全沙箱: https ://foo.bar.com:8443/foo/bar-html/Main.swf无法从foo.bar.com:8443加载数据。 Websocket已关闭。

我要使用的浏览器是FireFox 20.0.1。

我创建了一个JavaScript客户端,该客户端在端口8443上使用wss://协议连接到该地址,并且连接正常。

我在tomcat的ROOT目录下包含一个crossdomain.xml文件,因此flex应用程序将能够加载它。 crossdomain.xml文件的内容如下:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" secure="false" />
        <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

我检查了萤火虫,发现crossdomain.xml文件已正确加载。

我尝试使用以下命令手动指定crossdomain.xml文件的位置

flash.system.Security.loadPolicyFile("{Url to my crossdomain.xml file on the SSL virtual root}"); 

但我得到了相同的结果。

我还在此crossdomain.xml中尝试了不同的配置变化。 例如secure="yes" ,我试图指定使用的端口,但没有任何效果,我总是遇到安全沙箱冲突。

我知道mms.cfg文件可能启用了DisableSockets = 1指令,但是我的系统中没有这样的文件。 我正在使用Linux Gentoo。

有趣的是,我的系统与websocket位于同一域和同一端口上!

它实际上是一个Facebook应用程序,例如位于apps.facebook.com/foo上。而该画布页面例如是foo.bar.com:8443

然后安全的Web套接字地址也是wss://foo.bar.com:8443! 所以我真的不明白为什么我首先需要处理跨域!

任何有关此问题的信息将不胜感激!

谢谢

我安装了http://code.google.com/p/flashpolicyd/

它在端口843上打开一个服务器,该服务器实际上为每个请求提供文件库。 您在其中有一个接受每个主机和每个端口的策略文件,您需要根据需要对其进行修改。

那么您需要在flex代码中使用xmlsocket://协议将策略文件指向该地址。

    Security.loadPolicyFile("xmlsocket://hostname:843");

而已!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM