我的节点服务器和客户端运行在不同的端口(分别为 3001、5347)上。在我使用过的客户端上,
var socket = io('http://127.0.0.1:3001');
在服务器上我一一尝试了所有
1) io.set('origins', '*:*');
2) io.set('origins', 'http://127.0.0.1:5347');
3) io.set('origins', '*');
4) io.set('origins', '127.0.0.1:5347');
但我收到以下错误:
XMLHttpRequest 无法加载 http://127.0.0.1:3001/socket.io/?EIO=3&transport=polling&t=1456799439856-4590 。当凭证标志为真时,不能在“Access-Control-Allow-Origin”标头中使用通配符“*”。因此,Origin ‘null’ 不允许访问。
注意:我在服务器上使用 express 并且我已经通过以下方式使用 cors 中间件:
app.use(cors());
其中 app 和 cors 分别是 express 和 cors 的实例。
原文由 Akhilesh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果运行 Express 如下:
因此,要启动 socket.io,我们可以执行以下操作:
问题是由于以下代码:
传递给 socket.io 的服务器对象与我正在监听的服务器对象不同。