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