Socket.io没有设置CORS头

时间:2012-04-19 20:05:29

标签: http node.js websocket socket.io cors


我知道这个问题曾被问过几次 但是,我无法让任何解决方案起作用 我正在运行node.js和socket.io的标准安装。 (来自Amazon EC2上的yum)
问题是Chrome正在回退到xhr轮询,这些请求需要有效的CORS配置。但是,我似乎无法让它发挥作用。我的Web服务器在端口80上运行,node.js(socket.io)在端口81上运行。我试图让socket.io使用原始策略,如您所见。我也尝试用“*:*”作为起源而没有运气 这是我的代码:

var http = require('http');
var io = require('socket.io').listen(81, {origins: '*'});

io.configure( function(){
    io.set('origin', '*');
});
io.set("origins","*");

var server = http.createServer(function(req, res) {
    io.sockets.emit("message", "test");
res.writeHead(200);
    res.end('Hello Http');
    console.log("Message recieved!");
});
server.listen(82);

io.sockets.on('connection', function(client)  {
    console.log("New Connection");
});

非常感谢!

1 个答案:

答案 0 :(得分:8)

这是我必须使用的语法让CORS使用socket.io:

io.set( 'origins', '*domain.com*:*' );

如果涉及到,请使用console.log确保您在Manager.prototype.handleHandshake./lib/manager.js内输入此代码块:

 if (origin) {
    // https://developer.mozilla.org/En/HTTP_Access_Control
    headers['Access-Control-Allow-Origin'] = '*';

    if (req.headers.cookie) {
      headers['Access-Control-Allow-Credentials'] = 'true';
    }
  }