我有一个在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 的套接字策略文件服务器。
这在服务器运行的机器上运行良好(运行 OS X)。在该机器上,Flash 连接到策略文件服务器,然后连接到端口 5000 的 WebSocket 服务器。但是,在同一网络 (192.168.0.175) 上的 Windows(64 位)机器上,运行 Flash 10.3/11.2/11.3 (在 IE9/Chrome 中),我在 JS 控制台中收到以下错误消息:
日志:[WebSocket] 调试已启用
日志:[WebSocket] 策略文件:xmlsocket://192.168.0.179:843
[WebSocket] 无法连接到位于 ws://192.168.0.179:5000/websockettest 的 Web Socket 服务器(安全错误:错误 #2048:安全沙箱违规:
http://192.168.0.179/assets/flash/WebSocketMain.swf
无法从 192.168.0.179:5000 加载数据。)确保服务器正在运行并且正确放置 Flash 套接字策略文件日志:[WebSocket] 关闭
根据服务器机器上的 tcpdump 和 policy server 日志,Flash Player 甚至没有连接到位于 192.168.0.179 的 policy server。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 和 localhost 也不起作用,给出相同的错误消息
这可能是什么原因造成的?为什么 FP 甚至不尝试连接到策略服务器?