在过去的几天里,我一直在玩 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>