Javascript Socket.io、NodeJS和ReactJS CORS错误

Javascript Socket.io、NodeJS和ReactJS CORS错误,javascript,node.js,reactjs,socket.io,Javascript,Node.js,Reactjs,Socket.io,作为一个初学者,我读了一大堆关于同一问题的问题 当我通过React客户端以正常方式打开与套接字的连接时,仅将URL作为参数,我没有得到这个错误,连接已建立 但当我这么做的时候: const io = ioClient(webSocketUrl, { transportOptions: { polling: { extraHeaders: getAuthenticationToken() } } }); 每次请求都返回CORS错误 我曾尝试: 像这样设置原点

作为一个初学者,我读了一大堆关于同一问题的问题

当我通过React客户端以正常方式打开与套接字的连接时,仅将URL作为参数,我没有得到这个错误,连接已建立

但当我这么做的时候:

const io = ioClient(webSocketUrl, {
  transportOptions: {
    polling: {
      extraHeaders: getAuthenticationToken()
    }
  }
});
每次请求都返回CORS错误

我曾尝试:

  • 像这样设置原点:
    io.origins(['*:*'])

  • 应用程序使用(功能(请求、恢复、下一步){ res.setHeader( “访问控制允许来源”, 请求标题(“来源”)|| 请求标头(“x-forwarded-host”)|| 请求标题(“引用人”)|| 请求头(“主机”) ); res.header( “访问控制允许方法”, 获取、发布、选项、放置、修补、删除 ); res.header(“访问控制允许头”,“X请求,内容类型”); res.setHeader(“访问控制允许凭据”,false); next(); });

  • 还有:

    应用程序使用(cors()); app.options(“*”,cors())

上述措施都不起作用

如果有任何帮助,我将不胜感激。

找到了答案

对于有同样问题的人,我就是这样做的:

const io = require("socket.io")(server, {
  handlePreflightRequest: (req, res) => {
      const headers = {
          "Access-Control-Allow-Headers": "Content-Type, Authorization",
          "Access-Control-Allow-Origin": req.headers.origin, //or the specific origin you want to give access to,
          "Access-Control-Allow-Credentials": true
      };
      res.writeHead(200, headers);
      res.end();
  }
});

getAuthenticationToken
返回什么?它返回对象:{Authorization:“Bearer…”但我找到了一个解决方法!谢谢