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

Vue 2 devServer代理配置无法代理WebSocket如何解决?

解决Vue2开发服务器WebSocket代理失效问题

错误原因分析

你遇到的构造报错和代理配置无关,是WebSocket构造函数不支持直接传入相对路径,必须传入符合ws/wss协议的完整绝对URL,这是Failed to construct 'WebSocket': The URL '/ws' is invalid报错的直接原因。
和axios等HTTP请求库会自动补全相对路径的逻辑不同,WebSocket原生构造函数没有自动拼接当前页面origin的处理,必须手动补全完整地址。

正确配置步骤

1. 修正前端WebSocket创建代码

根据当前页面的访问地址动态构造完整的WebSocket URL,即可让请求走Vue开发服务器的代理规则:

// 自动适配http/https环境对应的ws/wss协议
const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'
// window.location.host就是Vue开发服务器的地址+端口,请求会自动走代理规则
const soc = new WebSocket(`${wsProtocol}//${window.location.host}/ws`)

2. 确认代理配置

你原有vue.config.js中的WebSocket代理配置基本正确,可补充日志参数方便排查问题:

const host = "127.0.0.1"
const port = 8080

module.exports = {
  devServer: {
    proxy: {
      "/api": {
        target:`http://${host}:${port}/`,
        secure:false
      },
      "/ws": {
        target:`ws://${host}:${port}/`,
        ws:true,
        secure:false,
        changeOrigin:true,
        // 可选:开启代理日志,调试时可确认请求是否被正确转发
        logLevel: 'debug'
      }
    }
  }
}

3. 生效验证

修改完vue.config.js后必须重启Vue开发服务,配置才会生效,此时启动项目即可正常通过代理连接后端WebSocket服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:03