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
      }
    }
  }
})
相关推荐
IT_陈寒12 分钟前
SpringBoot实战:3个隐藏技巧让你的应用性能飙升50%
前端·人工智能·后端
weixin1997010801615 分钟前
唯品会商品详情页前端性能优化实战
前端·性能优化
爱学习的程序媛23 分钟前
【Web前端】Pinia状态管理详解
前端·vue.js·typescript
爱学习的程序媛33 分钟前
“数字孪生”详解与前端技术栈
前端·人工智能·计算机视觉·智慧城市·信息与通信
海石40 分钟前
微信小程序开发02:原始人也能看懂的着色器与视频处理
前端·微信小程序·视频编码
程序员Sunday41 分钟前
Claude Code 生态爆发:5个必知的新工具
前端·人工智能·后端
ChoSeitaku1 小时前
NO.2|proto3语法|消息类型|通讯录|文件读取|enum类型
java·服务器·前端
小J听不清1 小时前
CSS 边框(border)全解析:样式 / 宽度 / 颜色 / 方向取值
前端·javascript·css·html·css3
用户255778850811 小时前
axios全局重复请求取消
前端
前端付豪1 小时前
实现一个用户可以有多个会话
前端·后端·llm