Socket.IO问题与非法来源?

我正在使用:“socket.io”:“〜0.9.10”

我遇到这个问题时,我去我的Apache Web服务器托pipeclient.html页面上托pipe的端口80:

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 

我如何摆脱这个问题?

你在做CORS 。

你得到的错误来自于Socket.IO似乎使用XHR而不是Websockets。 这是socket.IO在websocket不可用时所做的,它使用另一种协议,FlashSocket,XHR-polling等。

您需要在您的apache服务器上设置一个标头,以允许查询另一个网站,这里是您的Socket.io服务器。

这是一个如何 。

如果你只使用一台服务器,那对你来说会简单得多。 您可以使用Express来传递静态HTML文件。 这里是一个演示/教程的应用程序,使用Socket.IO + Express轻松入门。

这个演示是一个推动dotCloud的锅炉板 ,所以如果你想无痛部署,遵循这些指示。

尝试将'Access-Control-Allow-Origin'标题设置为'*'

 response.writeHead(200, { 'Access-Control-Allow-Origin': '*' });