2012-05-10 128 views
0

我有一台运行在http://192.168.0.179的服务器。它提供了一个Flash文件WebSocketMain.swf(从https://github.com/gimite/web-socket-js),该文件尝试执行到192.168.0.179:5000的套接字连接。我也有一个运行在192.168.0.179:843的套接字策略文件服务器。Flash Player不连接到套接字策略文件服务器 - 给出SecurityError#2048

这在服务器运行的机器上运行正常(运行OS X)。在该机器上,Flash连接到策略文件服务器,然后连接到端口5000上的WebSocket服务器。但是,在同一网络(192.168.0.175)上的Windows(64位)机器上,运行Flash 10.3/11.2/11.3而在这两个IE9 /浏览器),我得到的JS控制台以下错误信息:

LOG: [WebSocket] debug enabled

LOG: [WebSocket] policy file: xmlsocket://192.168.0.179:843

[WebSocket] cannot connect to Web Socket server at ws://192.168.0.179:5000/websockettest (SecurityError: Error #2048: Security sandbox violation: http://192.168.0.179/assets/flash/WebSocketMain.swf cannot load data from 192.168.0.179:5000.) make sure the server is running and Flash socket policy file is correctly placed

LOG: [WebSocket] closed

根据tcpdump和服务器计算机上的策略服务器日志,Flash播放器甚至不连接到策略服务器的192.168.0.179。 192.168.0.179:843是从.175机器打开的,因此FP连接到它应该没有问题。我可以通过.175机器上的终端客户端(例如PuTTY)连接到它,并且可以毫无问题地接收策略文件。只是为了确保我也禁用了Windows防火墙,也没有任何效果。

我已经尝试修改WebSocketMain.swf显式调用Security.loadPolicyFile(),并且根本不调用它,没有任何效果。我也尝试在代码中添加Security.allowDomain(“*”)。依然没有。我甚至尝试修改FP将连接到的URL(由Web服务器提供)到192.168.0.179:80。没有。 192.168.0.179:10000也不起作用。即使127.0.0.1和本地主机不起作用,给出相同的错误信息

什么可能导致此?为什么FP甚至不会尝试连接到策略服务器?

+0

该调用为'Security.loadPolicyFile(“xmlsocket://192.168.0.179:843”);'。今天我在服务器和客户端都用分组分析器进行了检查,并没有进行连接尝试。 – chrisl83

+0

我试图在第三台远程机器上托管网站。在OS X机器上一切正常,它连接到策略服务器,获取文件并连接套接字。但是在Windows机器上,问题仍然存在。 – chrisl83

回答

1

发现问题:在设置DisableSockets=1的机器上有一个全局配置文件mms.cfg。这产生了SecurityError并阻止Flash Player连接到策略文件服务器。将其设置为0(这是默认值)并且一切正常。有关此文件的详细信息,请参阅http://www.adobe.com/content/dam/Adobe/en/devnet/flash/articles/flash_player_admin_guide/flash_player_admin_guide.pdf第4章。

+0

好消息! :)只是问 - 政策服务器是什么意思?你必须在本地主机上使用策略文件,对吧?你做了一个套接字策略服务器,而不是一个http请求,对吗? –

相关问题