在运行下面的socket.io示例时,我在firebug中收到以下错误。任何人都可以帮我解决这个问题......
阻止跨源请求:同源策略禁止在http://localhost/socket.io/?EIO=3&transport=polling&t=1447667170745-0读取远程资源。 (原因:缺少CORS标题'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>
答案 0 :(得分:3)
在节点js中安装cors库。安装cors的命令如下。
npm install cors
现在将以下代码添加到您的nodejs服务器文件中,以允许跨源请求允许。
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
有时需要将nodejs客户端文件保存在索引文件所在的根目录中。
只需检查防火墙设置,它也会阻止您正在使用的服务器端口。
希望它对你有用。
答案 1 :(得分:2)
尝试更改服务器侦听端口:
server.listen(8080);
现在我们将使用端口8080,更改HTML脚本以连接到该端口:
var socket = io.connect('http://localhost:8080');
它应该都可以正常工作。