JavaScript 中 Vite 怎么配置静态资源代理与跨域请求转发支持后端接口联调

雨磊小哥_5316

雨磊小哥_5316

2026-08-27

461人浏览

原创

vite静态资源代理是在开发阶段将前端请求(如/api)转发至后端以绕过同源策略,需配置server.proxy,changeorigin必须为true;路径重写用rewrite去除前缀;多代理支持https需设secure: false,websocket需ws: true;axios baseurl须设为代理前缀(如/api)。

javascript 中 vite 怎么配置静态资源代理与跨域请求转发支持后端接口联调

在 Vite 中配置静态资源代理,本质是让开发服务器把前端发往特定路径(如 /api)的请求,自动转发到后端服务地址,从而绕过浏览器同源策略。它不修改前端代码里的 URL,也不依赖后端开启 CORS,只在 本地开发阶段生效,打包上线后无效。

基础代理配置:最简写法

适用于后端接口路径与前端请求路径完全一致的情况(例如后端接口就是 /api/login,且运行在 http://localhost:3000):

  • 在 vite.config.ts 或 vite.config.js 的 server.proxy 中添加键值对
  • 键是请求前缀(如 '/api'),值是目标后端地址(字符串简写)
  • changeOrigin: true 必须开启,否则部分后端会因 Host 头不匹配而拒绝请求

示例:

Vite
Vite

为开发、生产构建和库打包配置并优化 Vite。

下载
vite.config.ts
export default defineConfig({
  server: {
    proxy: {
      '/api': 'http://localhost:3000'
    }
  }
})

此时调用 fetch('/api/login'),Vite 会转发为 http://localhost:3000/api/login。

路径重写:去掉前缀再转发

更常见的情况是:后端没有 /api 这层路径(比如真实接口是 /login),但你希望前端统一用 /api/login 调用——这时必须用 rewrite 函数手动去除前缀。

  • rewrite 是一个接收原始路径的函数,返回处理后的路径
  • 正则 /^\/api/ 精准匹配开头的 /api,避免误删其他含 api 的路径
  • 若后端地址本身带子路径(如 http://localhost:8080/server_war_exploded),也要确保 rewrite 后路径拼接正确

示例:

vite.config.ts
'/api': {
  target: 'http://localhost:3000',
  changeOrigin: true,
  rewrite: (path) => path.replace(/^\/api/, '')
}

此时 fetch('/api/login') → 转发为 http://localhost:3000/login。

多级代理与 HTTPS 后端适配

项目常需对接多个后端服务(如用户服务、管理后台、文件上传),或调用 HTTPS 接口。这些场景需显式配置更多参数:

  • 可同时定义多个代理规则,键名互不冲突即可(如 '/admin'、'/upload')
  • 调用 https 后端时,需设 secure: false,否则代理会因 SSL 证书验证失败而中断
  • 若需代理 WebSocket 连接(如实时通知),加上 ws: true

示例(混合配置):

vite.config.ts
proxy: {
  '/api': {
    target: 'http://localhost:3000',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/api/, '')
  },
  '/admin': {
    target: 'http://localhost:8001',
    changeOrigin: true,
    secure: false
  },
  '/upload': {
    target: 'https://upload.example.com',
    changeOrigin: true,
    secure: false,
    ws: true
  }
}

配合 Axios 使用的关键点

前端使用 Axios 时,baseURL 必须设为代理前缀,不能写真实后端地址,否则代理不会触发:

  • 错误写法:baseURL: 'http://localhost:3000' —— 请求直接发出,跨域报错
  • 正确写法:baseURL: '/api' —— 请求走本地 /api/xxx,被 Vite 拦截并转发
  • 环境变量可用来区分开发/生产,但代理配置本身只在 dev 模式下起作用,线上需由 Nginx 或 CDN 统一处理

示例(request.ts):

const service = axios.create({
  baseURL: '/api', // 注意这里不是真实地址
  timeout: 10000
})

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2263

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5970

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5306

10

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

4486

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

1129

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

4404

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

900

4

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

1796

5

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

2023.09.04

3245

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.6万人学习