Socket.IO与非法来源问题?

时间:2012-09-26 02:05:40

标签: node.js socket.io

我正在使用: “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

如何摆脱这个问题?

2 个答案:

答案 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': '*'
});