过去几天我一直在玩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>
答案 0 :(得分:1)
固定。我将其从指向localhost更改为我的服务器externalIP。
之前我曾试过这个,但不幸的是服务器缓存了我的swf文件,我没有意识到它已被修复。
Security.loadPolicyFile("xmlsocket://****.com:10843");
socket = new FlashSocket("****.com:8000");