尝试运行socket.io示例时,获取跨源请求阻止错误

在运行下面的socket.io示例时,我在firebug中得到了下面的错误。任何人都可以帮我解决这个问题。

跨源请求被阻止:相同来源策略不允许通过http://localhost/socket.io/?EIO = 3&transport = polling&t = 1447667170745-0读取远程资源。 (原因:缺lessCORS头'Access-Control-Allow-Origin')。

我的app.js:

var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(80); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 

我的index.html:

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> 

尝试更改服务器侦听端口:

 server.listen(8080); 

现在我们将使用端口8080,更改HTML脚本以连接到该端口:

 var socket = io.connect('http://localhost:8080'); 

它应该都工作得很好。

在节点js中安装cors库。 安装cors的命令如下。

 npm install cors 

现在将下面的代码添加到您的nodejs服务器文件以允许跨源请求允许。

 var express = require('express'); var cors = require('cors'); var app = express(); app.use(cors()); 

有时需要将您的nodejs客户端文件保存在您的索引文件所在的根目录中。

只要检查你的防火墙设置,它也会阻塞你正在使用的服务器端口。

希望这是为你工作。