2

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

当我转到托管在端口 80 上的 apache 网络服务器托管的 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

我该如何摆脱这个问题?

4

2 回答 2

1

你正在做CORS

您收到的错误来自 Socket.IO 似乎使用的是 XHR 而不是 Websockets。这就是当 websockets 不可用时 socket.IO 所做的,它使用另一个协议,FlashSockets,XHR-polling ......等等。

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

这是一个如何

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

这个演示是推动 dotCloud 的样板,所以如果你想轻松部署,请按照这些说明进行操作。

于 2012-09-26T02:13:59.370 回答
0

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

response.writeHead(200, {
  'Access-Control-Allow-Origin': '*'
});
于 2012-09-26T02:09:49.420 回答