Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题

news/2025/2/24 14:18:20

在 Vue 3 + Vite 项目中,配置代理是解决开发环境中跨域请求问题的常见方法。通过在 Vite 的配置文件中设置代理,可以将前端请求转发到后端服务器,从而避免浏览器的同源策略限制。

1. 创建 Vue 3 + Vite 项目

首先,确保你已经安装了 Node.js。然后,使用以下命令创建一个新的 Vue 3 + Vite 项目:

npm create vite@latest my-vue-app --template vue

进入项目目录并安装依赖:

cd my-vue-app
npm install

启动开发服务器:

npm run dev

此时,开发服务器默认运行在 http://localhost:5173/

2. 配置代理

在 Vite 项目中,代理配置位于 vite.config.js 文件中。假设你的后端服务器运行在 http://127.0.0.1:3000,并且前端请求的路径以 /api 开头,你希望将这些请求代理到后端服务器。

编辑 vite.config.js,添加代理配置:

javascript">import { defineConfig } from 'vite';

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:3000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
});

配置说明:

  • target: 代理的目标地址,即后端服务器的地址。
  • changeOrigin: 是否修改请求头中的 Origin 字段,通常设置为 true
  • rewrite: 重写请求路径,将以 /api 开头的请求路径去掉 /api 部分,转发到后端服务器。

3. 使用代理

前端代码中,发起请求时使用相对路径 /api,例如:

javascript">import axios from 'axios';

axios.get('/api/user/info')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

由于代理配置的存在,实际请求会被转发到 http://127.0.0.1:3000/user/info。这种方式可以有效避免跨域问题。

4. 注意事项

  • 代理配置仅在开发环境有效,生产环境需要通过其他方式处理跨域问题。
  • 确保后端服务器已启动,并且监听在配置的目标地址上。
  • 在使用代理时,前端请求的路径应与代理配置中的路径匹配。

通过上述配置,你可以在 Vue 3 + Vite 项目中成功设置代理,解决开发环境中的跨域请求问题。


http://www.niftyadmin.cn/n/5864448.html

相关文章

广东英语十二种应用文模版范文

1. 邀请信(Invitation Letter) 模版 Dear [Recipients Name],I hope this letter finds you well. I am writing to invite you to [Event Name] which will be held on [Date] at [Location]. The event will start at [Time] and we would be deligh…

CSS通过webkit-scrollbar设置滚动条样式

查看::-webkit-scrollbar-*各项关系 以下图为例&#xff0c;可以分别定义滚动条背景、滚动轨道、滚动滑块的样式。 需要先给外部容器设置高度&#xff0c;再设置overflow: auto&#xff0c;最后设置三个webkit属性。 <!DOCTYPE html> <html lang"en">…

[LeetCode力扣hot100]-快速选择和快排

快速选择与快速排序的区别&#xff1a; 快速排序&#xff1a;递归地对数组的左右两部分进行排序。快速选择&#xff1a;只递归处理包含第 k 个元素的那一部分&#xff0c;目标是找到第 k 大的元素&#xff0c;而不是对整个数组排序。 快排 void quickSortHelper(vector<i…

MongoDB#常用语句

创建TTL索引(自动删除过期数据) db.xxx_collection.createIndex({ createTime: 1 }, { expireAfterSeconds: 1 * 24 * 60 * 60 * 1000 }); 查询JavaScript函数(mongosh) db.system.js.find 查询document条数 db.getCollection(‘xxx’).countDocuments({}) 根据_id查询 {‘_id’…

07.Docker 数据管理

Docker 数据管理 Docker 数据管理1. 数据卷(data volume)2. 数据卷容器 Docker 数据管理 Docker 镜像由多个只读层叠加而成&#xff0c;启动容器时&#xff0c;Docker 会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的文件&#…

CentOS-7-x86_64-Minimal-2009 免费下载与使用教程

一、CentOS-7-x86_64-Minimal-2009 简介 CentOS 7 是一款基于 Red Hat Enterprise Linux (RHEL) 的开源操作系统&#xff0c;Minimal 版本 仅包含基础软件包&#xff0c;适合需要轻量化、高定制的服务器或开发环境。 核心优势&#xff1a; 轻量高效&#xff1a;仅需约 900MB 存…

机器学习数学通关指南——泰勒公式

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 泰勒公式是用多…

进程的替换

目录 execl execv execlp execvpe ​编辑 再认识环境变量&#xff1a; 进程的替换不是创建新进程&#xff0c;用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。当进程调用一种exec函数时,该进…