使用socket.io和express(node.js)时出现CORS错误如何解决?
Socket.io CORS报错修复方案
Socket.io v3及以上版本默认启用严格跨域校验,你需要在初始化实例时新增CORS配置即可解决问题,修改后的初始化代码如下:
let io; module.exports = { init: (httpServer) => { io = require("socket.io")(httpServer, { cors: { // 替换为你实际的前端访问地址,开发测试可临时写*,生产环境务必指定可信域名 origin: "http://localhost:3000", methods: ["GET", "POST"], // 若需要跨域传递cookie等身份凭证请开启此项 credentials: true } }); return io; }, getIO: () => { if (!io) { throw new Error("Socket.io not initialized"); } return io; }, };
补充注意事项
- 允许多个域名访问时,origin可传入数组:
origin: ["http://localhost:3000", "https://your-prod-domain.com"] - 如果你使用的是Socket.io v2版本,跨域配置项名为
origins,写法为:origins: "http://localhost:3000:*" - 生产环境禁止使用
origin: "*"的配置,会带来跨域安全风险
内容的提问来源于stack exchange,提问作者user17105460
相关产品推荐
相关产品推荐

