Cors被Nodejs / socketio解决方案阻止

时间:2019-11-01 15:50:39

标签: node.js docker cors

在我的应用程序中,我正在使用socketio和nodejs。我正在尝试实现一种简单易用的简单解决方案,该解决方案将数据提供给客户端并将其某些部分更新到服务器端。

一切都进展顺利,直到由于CORS被阻止并且无法在webapp和后端之间建立连接而使Web应用程序无法连接到服务器端时,从IDE(phpstorm)移至docker环境。

  • 将Webapp加载到浏览器时不会出现问题,只要它在Docker中运行即可。
  • 后端服务器也可以毫无问题地运行Docker容器,并且它在给定的端口和地址(本地主机)中侦听传入的请求。

缺少什么?我已经尝试了Google几个小时,我不得不说我不知道​​服务器端实现中仍然缺少什么。

后端:

const io = require('socket.io');
.
.
const server = io.listen(prefs.configs.server.serverPort,  {origins: "*:*", transport :[ 'websocket', 'polling', 'xhr']});
server.set('origins', '*:*');

// event fired every time a new client connects:
server.on("connection", (socket) => {...});

socket.io版本2.3.0,最新版本

前端(反应应用程序):

.
.

let mapMarkerLayers = {};

const api_url = process.env.REACT_APP_BACKEND_API_URL;
let socket = null;
//
if (api_url !== undefined) {
    socket = socketIOClient(api_url);
} else  {
    console.log ("Backend url not defined, api calls not in use.");
}

.
.

        if (socket) {

            socket.on('markers:all', (cb) => {
                this.addMarkers(cb);
            });

            // get all markers from backend to display on the map.
            socket.emit("markers:fetch_all");

        }

我尝试过使用其他种类的起源字段,但是没有运气。

api调用的结果是FF中的另一种结果。

  

跨域请求被阻止:“同源起源”策略不允许在http://localhost:5010/socket.io/?EIO=3&> transport = polling&t = MuddFxK上读取>远程资源。 (原因:CORS请求未成功。)

0 个答案:

没有答案