我有一个可以工作的 node.js Express 服务器,我想向它添加 socket.io 支持(允许 javascript 客户端通过 socket.io 连接)。我可以通过 Javascript $.get() 连接到 express 服务器,但是由于 CORS 错误,socket.io.connect() 命令失败。
我的测试机器是带有 Apache 的 OSX 为客户端提供服务,因此使用了 80 端口,所以我在 8888 端口上运行了 node.js/express。我根据文档添加了 socket.io:
var exp = express();
var server = require('http').createServer(api.server);
exp.listen(8888);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
console.log('connection');
});
我在我的 node.js 日志中正确地看到了“信息:socket.io 已启动”。
然后,在客户端,我尝试连接到服务器......
this.socket = io.connect('http://localhost:8888');
this.socket.on('connect',function() {
socket.emit('install','test');
});
但是,我在 Chrome 的控制台中收到了 CORS 错误:
XMLHttpRequest cannot load http://localhost:8888/socket.io/1/?t=1358715637192. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
但是,这很好用!
$.get('http://localhost:8888',function(e,d){
console.log(e,d);
});
因此,我仔细检查了 localhost:8888 和 localhost 的标头 - 两者都正确返回了(应该)允许跨域请求的标头...
访问控制允许来源:*
有任何想法吗?