Socket.IO flashsocket安全沙箱错误

时间:2013-04-01 15:16:51

标签: socket.io cross-domain-policy flashsocket

过去几天我一直在玩node.js和socket.io。一切正常在我的本地机器上运行(windows使用iss作为网络服务器),但是当它上传到我的远程服务器(ubuntu盒子)时,我遇到了安全错误。

[trace] Warning: Failed to load policy file from http://localhost:8000/crossdomain.xml
[trace] *** Security Sandbox Violation ***
[trace] Connection to http://localhost:8000/socket.io/1/ halted - not permitted from http://****/virtualcinema/VirtualCinema.swf
[trace] Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation: http://****/virtualcinema/VirtualCinema.swf cannot load data from http://localhost:8000/socket.io/1/.

它错误的AS3代码是:

Security.loadPolicyFile("xmlsocket://localhost:10843");
socket = new FlashSocket("localhost:8000");

策略文件在端口10843上正确提供,我可以在浏览器中以http:// * *:10843 /接收该策略文件。为什么要尝试在端口8000上加载策略文件。该警告不会出现在我的本地版本中。

socket.io代码:

socket = io.listen(8000);

socket.configure(function() 
{
    socket.set("transports", ["flashsocket"]);
    socket.set("log level", 2);

});

当我在本地机器上测试它而不是在远程机器上测试时,我很困惑为什么它会被解决。任何帮助将不胜感激:))

我正在使用的crossdomain.xml:

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

1 个答案:

答案 0 :(得分:1)

固定。我将其从指向localhost更改为我的服务器externalIP。

之前我曾试过这个,但不幸的是服务器缓存了我的swf文件,我没有意识到它已被修复。

Security.loadPolicyFile("xmlsocket://****.com:10843");
socket = new FlashSocket("****.com:8000");