我正在使用: “socket.io”:“~0.9.10”
当我访问托管在端口80上的apache webserver托管的client.html页面时,我遇到了这个问题:
XMLHttpRequest cannot load http://localhost:5000/socket.io/1/?t=1348624895534. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
我在服务器端运行SocketIO,使其位于端口5000上,如下所示:
io = io.listen(5000);
io.set("origins","*");
但是,每次我加载apache client.html页面时,都会在我的SocketIO服务器控制台中看到:
warn: illegal origin: http://localhost
如何摆脱这个问题?
答案 0 :(得分:1)
你正在做CORS。
你得到的错误来自于Socket.IO似乎在使用XHR而不是Websockets。这就是socket.IO在websockets不可用时所做的事情,它使用另一个协议,FlashSockets,XHR-polling ......等。
您需要在Apache服务器上设置一个标头,以允许查询到另一个网站,这里是您的Socket.io服务器。
这是how to。
如果你只使用一台服务器,对你来说会简单得多。 您可以使用Express来传递静态html文件。 Here是一个演示/教程应用程序,可以使用Socket.IO + Express轻松入门。
此演示是boiler plate推送dotCloud,因此如果您想轻松部署,请按照这些说明进行操作。
答案 1 :(得分:0)
尝试将'Access-Control-Allow-Origin'
标题设置为'*'
response.writeHead(200, {
'Access-Control-Allow-Origin': '*'
});