当前位置: 首页 > news >正文

vue项目proxy代理的方式

以下是一个详细的 Vue 项目配置 Proxy 代理 的示例和说明,用于解决开发环境跨域问题:


1. 基础代理配置

vue.config.js 配置文件
// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      // 代理所有以 /api 开头的请求
      '/api': {
        target: 'http://localhost:3000', // 后端接口地址
        changeOrigin: true,              // 开启虚拟域名
        pathRewrite: {
          '^/api': ''                    // 重写路径(可选)
        }
      }
    }
  }
}
使用示例
// 前端请求代码
axios.get('/api/users') // 实际转发到 http://localhost:3000/users

2. 多路径代理配置

// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true
      },
      '/uploads': {
        target: 'http://resource-server.com',
        changeOrigin: true,
        pathRewrite: {
          '^/uploads': '/static' // 重写路径到/static
        }
      }
    }
  }
}

3. 高级代理配置

代理 WebSocket
// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/socket.io': {
        target: 'ws://localhost:4000',
        ws: true,          // 代理WebSocket
        changeOrigin: true
      }
    }
  }
}
绕过代理的白名单
// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        bypass: function(req) {
          // 不代理 /api/login 请求
          if (req.url === '/api/login') {
            return req.url;
          }
        }
      }
    }
  }
}

4. 配置参数说明

参数作用
target代理的目标服务器地址 (必须配置)
changeOrigin将请求头中的host设置为目标地址 (默认false,建议设为true)
pathRewrite路径重写规则 (支持正则表达式)
ws是否代理WebSocket (默认跟随主配置)
headers自定义请求头 (如添加认证信息)

5. 常见问题排查

代理不生效的检查步骤
  1. 检查 vue.config.js 是否在项目根目录
  2. 重启开发服务器 (npm run serve)
  3. 查看浏览器控制台网络请求:
    • 请求URL应为相对路径 (如 /api/data)
    • 实际请求地址应显示为代理目标地址
  4. 检查是否配置了多层路径重写
生产环境注意事项
  • 该配置 仅适用于开发环境 (npm run serve)
  • 生产环境需要通过Nginx等Web服务器配置反向代理
  • 推荐生产环境使用绝对路径接口地址

完整配置示例

// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      // 用户服务接口
      '/user-api': {
        target: 'http://user-service:8000',
        changeOrigin: true,
        pathRewrite: {
          '^/user-api': '/api/v1'
        }
      },
      // 订单服务接口
      '/order-api': {
        target: 'http://order-service:8001',
        changeOrigin: true,
        pathRewrite: {
          '^/order-api': '/api/v2'
        }
      },
      // 文件上传服务
      '/upload': {
        target: 'http://file-service:8002',
        changeOrigin: true
      }
    }
  }
}

Nginx 生产环境配置参考

server {
  listen 80;
  server_name yourdomain.com;

  location /api/ {
    proxy_pass http://backend-server:3000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }

  location / {
    root /usr/share/nginx/html;
    try_files $uri $uri/ /index.html;
  }
}

通过以上配置,即可实现开发环境的接口代理和跨域请求处理。

相关文章:

  • DeepSeek与搜索引擎:AI生成内容如何突破“语义天花板”
  • 【前端】VUE前端利用iframe嵌入帆软报表
  • 【Python算法】基础语法、算法技巧模板、二分、DFS与BFS、并查集
  • V4L2杂谈
  • 【U-Boot】解决U-Boot的“Unknown command ‘help‘ - try ‘help‘”问题
  • 等保十问/等保相关基本问题解答
  • git日志规范
  • FastAPI + Vue3 对 SSE 通知机制的实现与进阶思考
  • Python----概率论与统计(贝叶斯,朴素贝叶斯 )
  • 青少年编程与数学 02-016 Python数据结构与算法 05课题、哈希表
  • 如何在Linux系统Docker部署Dashy并远程访问内网服务界面
  • ROS云课三分钟-差动移动机器人巡逻报告如何撰写-中等报告
  • 使用pip3安装PyTorch与PyG,实现NVIDIA CUDA GPU加速
  • LeetCode Hot100 刷题笔记(1)—— 哈希、双指针、滑动窗口
  • <component>用于挂载切换几个不同的组件
  • mobaxterm连接ssh提示sshpass: command not found
  • vmware、centos: 快照、redis集群克隆、虚拟机克隆后无法上网
  • 最简rnn_lstm模型python源码
  • 京存双活磁盘阵列助力国家交通指挥中心
  • Excel流式多线程带进度条功能的导入框架
  • 六十岁一级a做爰片免费网站/成品短视频软件大全下载手机版
  • 网站开发文件夹/百度关键字搜索量查询
  • 知名的政府网站建设提供商/新手做外贸怎么入门
  • 影视公司起名/天津优化加盟
  • 做网站需要多少钱 做/西安网站托管
  • c 建设web网站的流程图/教育培训机构平台