You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3 + Axios + Vite环境下跨域问题求助

Vue3 + Axios + Vite环境下跨域问题求助

看起来你的跨域问题是因为Axios的baseURL配置没和Vite代理规则配合好导致的,我帮你梳理下问题根源和解决步骤:

问题分析

你已经配置了Vite代理,要把/api开头的请求转发到后端,但一开始Axios直接把请求发去了http://localhost:8088/api——等于绕过了Vite代理,浏览器直接和后端服务器通信,自然触发跨域。后来改成api又因为路径格式不对,没触发代理规则。

解决方案

1. 修正Axios的baseURL配置

把Axios的baseURL改成带斜杠的相对路径'/api',这样所有请求都会先发送到Vite的开发服务器(比如默认的http://localhost:5173),再由Vite转发到后端,彻底绕开浏览器的跨域限制。

修改后的axios.js:

import axios from "axios";

let config = {
  baseURL: '/api', // 关键:改成带斜杠的相对路径
  timeout: 1000,
  withCredentials: true
}

const instance = axios.create(config)

export default instance

2. 确认Vite代理规则(你的配置其实是对的,再核对下)

你的vite.config.js代理配置没问题,这个规则会把前端发送的/api/user/login转发成http://localhost:8088/user/login,正好匹配后端接口路径:

proxy: {
  "/api": {
    target: "http://localhost:8088",
    secure: false,
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/api/, '') // 去掉/api前缀,转发到后端的/user/login
  }
}

3. 页面请求保持不变

你页面里的请求代码不用改,因为Axios的baseURL是/api,实际请求的完整路径会自动拼接成/api/user/login,正好触发Vite代理:

$axios.post('/user/login', {
  u_account: ruleForm.account,
  u_password: ruleForm.password
})
// ... 后续逻辑

4. 重启Vite开发服务器

修改完配置文件后,一定要重启Vite,确保新配置生效——很多时候配置不生效都是因为没重启服务器。

额外提醒

  • 代理只在开发环境生效,生产环境需要用Nginx反向代理或者后端配置CORS。
  • 如果你的后端接口本身就带/api前缀,那把Vite代理的rewrite规则去掉就行,比如改成rewrite: (path) => path,这样转发后的路径就是http://localhost:8088/api/user/login。

备注:内容来源于stack exchange,提问作者Lynx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:04:04