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
      }
    }
  }
})
相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
触底反弹8 小时前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
阳光是sunny8 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
小林ixn9 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker9 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜10 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
一点一木10 小时前
从60首歌到1个网站:输入你的故事,还你一首歌
前端·github
IT_陈寒12 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端