vite.config.js 代理配置

vite.config.js 基础代理配置

vite.config.js 中通过 server.proxy 配置代理,解决开发环境跨域问题。以下为基本示例:

javascript 复制代码
import { defineConfig } from 'vite'

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://your-backend-server.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})

多路径代理配置

支持同时代理多个不同路径到不同后端服务:

javascript 复制代码
proxy: {
  '/api': {
    target: 'http://service1.example.com',
    changeOrigin: true
  },
  '/uploads': {
    target: 'http://service2.example.com',
    changeOrigin: true
  }
}

路径重写规则

通过 rewrite 函数修改请求路径:

javascript 复制代码
proxy: {
  '/data': {
    target: 'http://api.example.com/v2',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/data/, '/new/path')
  }
}

WebSocket 代理支持

配置 WebSocket 连接代理:

javascript 复制代码
proxy: {
  '/socket': {
    target: 'ws://your-websocket-server.com',
    ws: true,
    changeOrigin: true
  }
}

自定义请求头处理

通过 headers 配置添加或修改请求头:

javascript 复制代码
proxy: {
  '/secure': {
    target: 'https://secure-api.example.com',
    changeOrigin: true,
    headers: {
      'X-Custom-Header': 'value',
      Authorization: 'Bearer token_here'
    }
  }
}

开发环境与生产环境区分

结合环境变量动态配置代理:

javascript 复制代码
const isDev = process.env.NODE_ENV === 'development'

export default defineConfig({
  server: isDev ? {
    proxy: {
      '/api': {
        target: 'http://dev-server.example.com'
      }
    }
  } : undefined
})

HTTPS 目标配置

代理到 HTTPS 后端时需要配置安全选项:

javascript 复制代码
proxy: {
  '/secure-api': {
    target: 'https://secure.example.com',
    secure: false, // 忽略证书验证
    changeOrigin: true
  }
}

代理超时设置

配置请求超时时间(毫秒):

javascript 复制代码
proxy: {
  '/slow-api': {
    target: 'http://slow-server.example.com',
    timeout: 5000 // 5秒超时
  }
}

代理 bypass 函数

实现条件代理逻辑:

javascript 复制代码
proxy: {
  '/conditional': {
    target: 'http://example.com',
    bypass: (req, res, options) => {
      if (req.headers.accept?.includes('html')) {
        return '/index.html'
      }
    }
  }
}

完整配置示例

结合多种配置的完整示例:

javascript 复制代码
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://backend:3000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
        headers: {
          'X-Forwarded-Host': 'localhost'
        }
      },
      '/ws': {
        target: 'ws://chat-server:4000',
        ws: true
      }
    }
  }
})
相关推荐
十里-18 小时前
vue.js 2前端开发的项目通过electron打包成exe
前端·vue.js·electron
雨季66618 小时前
构建 OpenHarmony 简易文字行数统计器:用字符串分割实现纯文本结构感知
开发语言·前端·javascript·flutter·ui·dart
小北方城市网19 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
console.log('npc')19 小时前
vue2 使用高德接口查询天气
前端·vue.js
2401_8920005219 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 添加支出实现
前端·javascript·flutter
天马379819 小时前
Canvas 倾斜矩形绘制波浪效果
开发语言·前端·javascript
天天向上102419 小时前
vue3 实现el-table 部分行不让勾选
前端·javascript·vue.js
qx0919 小时前
esm模块与commonjs模块相互调用的方法
开发语言·前端·javascript
Mr Xu_20 小时前
前端实战:基于Element Plus的CustomTable表格组件封装与应用
前端·javascript·vue.js·elementui
0思必得020 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化