繁体   English   中英

尝试运行socket.io示例时遇到跨域请求阻止错误

[英]Getting Cross-Origin Request Blocked Error when trying to run socket.io sample

运行下面的socket.io示例时,我在萤火虫中遇到以下错误。有人可以帮我解决这个问题吗?

跨域请求被阻止: 同源策略禁止读取位于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>

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

npm install cors

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

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

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

只需检查防火墙设置,它还会阻止您正在使用的服务器端口。

希望它为您工作。

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

server.listen(8080);

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

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

它应该一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM