You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+Vue项目接入socket.io时出现CORS跨域错误该如何解决

Socket.IO跨域问题解决方案

问题根源:Laravel的跨域中间件仅作用于Laravel自身的服务请求,而你的Socket.IO服务独立运行在3001端口,其握手和通信请求不受Laravel中间件管控,且你当前仅给Express配置了CORS,没有给Socket.IO单独配置跨域规则。

解决步骤

  • 步骤1:修改Socket.IO服务端的初始化配置,显式开启跨域
    找到Node服务中初始化Socket.IO的代码,替换为以下内容:
// 替换原来的 const io = require('socket.io')(server);
const io = require('socket.io')(server, {
  cors: {
    origin: "http://dolphin.test", // 允许你的前端源访问,本地调试也可临时设为"*"
    methods: ["GET", "POST"],
    credentials: true
  }
});
  • 步骤2:(可选)优化客户端连接配置
    修改Vue组件中Socket.IO客户端的初始化代码,减少轮询模式下的跨域预检异常:
// 替换原来的 socket : io("http://dolphin.test:3001"),
socket : io("http://dolphin.test:3001", {
  transports: ['websocket', 'polling'], // 优先使用websocket协议
  withCredentials: true
}),
  • 步骤3:重启服务验证
    修改完代码后重启Node Socket.IO服务,再刷新前端页面测试连接即可。

内容的提问来源于stack exchange,提问作者Pawan Manka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 09:48:03