Socket.io跨域问题-Access-Control-Allow-Origin不允许起源

Rob*_*bie 5 cross-domain node.js socket.io

我在网址(example.com)上有一个网站,并且正在使用node.js / socket.io将JSON传递到我的网页中。我目前收到错误消息:“ XMLHttpRequest无法加载http://example.com:12003/socket.io/1//8970269226935030030/?disconnect=1。Access-不允许原始http://example.com。控制允许来源。”

我的节点代码如下所示:

   var http = require('http');
   var mysqlClient = require('mysql').createClient({'user':'root','password':'XXXXXXXX'});

   mysqlClient.query('USE myDBName');

   var mysqlData;

   setInterval(function(){
       mysqlClient.query(
                      'SELECT number, page_id FROM dbTableName',
                      function selectCb(err, results, fields) {
                        if (err) {
                          throw err;
                  }

                mysqlData = [];
           for(var i = 0; i < results.length; i++){
               mysqlData[i] = results[i];
           }
       });  
   }, 1000);

   var io = require('socket.io').listen(12003);
   io.sockets.on('connection', function(client) {

       console.log("New Connection: ", client.id); //log new connection

             client.emit('connection', client.id);//custom emit to let site know its connected
            client.on("requestNewData", function(data){
                client.emit('init', JSON.stringify(mysqlData));
       });

       client.on('disconnect', function() {
        console.log("Disconnected: ", client.id);
       });
   });
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下代码来解决该问题,但没有成功:

          var io = require('socket.io').listen(12003, {origins: '*:*'});
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu Ocelot在Amazon EC2上运行。我的客户端代码是:

          <script src="http://example.com:12003/socket.io/socket.io.js"></script>
          <script type="text/javascript">
              var socket = io.connect('http://example.com:12003');
              socket.emit("requestNewData", {"nothing":"here"});
              ...
Run Code Online (Sandbox Code Playgroud)

因为我只是使用套接字,所以我认为我不能在节点代码中使用'Access-Control-Allow-Origin':'*'。任何帮助将不胜感激。我收到的错误仅在Chrome上-从我的理解中,Chrome对跨域连接的限制更多...

提前致谢。

Hor*_*ein 0

尝试仅在客户端上包含 socket.io 的相对路径:

<script src="/socket.io/socket.io.js"></script>
var socket = io.connect('http://example.com');
Run Code Online (Sandbox Code Playgroud)