NodeJS CORS策略:无“控制-允许-起源”,这发生在套接字中

jdg4fx2g  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(38)

我正在使用socket.io创建一个应用程序,并使用ReactJs作为前端和NodeJs作为后端。我在项目中实现了socket,以便根据一次出现的用户在前端和后端之间进行通信。当我在本地主机上执行时,一切都很好,但在项目完成后,我在netlify上托管了后端和前端,并且我得到了cors策略错误,如下所示:

Access to XMLHttpRequest at 'https://google-docs-backend.netlify.app/socket.io/?EIO=4&transport=polling&t=Oog1MmL' from origin 'https://google-docs-frontend.netlify.app' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

个字符
我希望连接应该建立套接字,因为它是在本地主机和前端和后端都应该communiacate正确工作。
我试着通过一些标题如下,但它没有工作:

const corsOptions ={
  origin: CLIENT_URL,     // "https://google-docs-frontend.netlify.app"
  credentials:true,
  optionSuccessStatus:200
}

const app = express();

app.use(cors(corsOptions));

app.use((req, res, next) => {
  res.header(
    "Access-Control-Allow-Origin",
    "https://google-docs-frontend.netlify.app"
  );
  res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
  res.header("Access-Control-Allow-Headers", "Content-Type");
  next();
});

const io = require("socket.io")(3001, {
  cors: {
    origin: CLIENT_URL,        // "https://google-docs-frontend.netlify.app"
    method: ["GET", "POST"],
  },
});


下面是我调用套接字的前端代码

useEffect(() => {
    const s = io(SOCKET_URL);      // "https://google-docs-backend.netlify.app/"
    setSocket(s);
    return () => {
      s.disconnect();
    };
  }, []);


我想建立从前端到后端的套接字连接。

hec6srdp

hec6srdp1#

我找到了一个解决方案。早些时候,我在netlify上托管我的后端,它导致了这个问题。现在我在render.com上托管我的应用程序,它完全正常工作。

相关问题