在使用 Vite 构建项目时,跨域问题可以通过配置开发服务器的代理来解决。Vite 的跨域配置与 Vue CLI 类似,但使用的配置方式是 vite.config.js 文件中的 server.proxy 配置项。
步骤:在 Vite 中配置跨域代理
-
创建或修改
vite.config.js文件Vite 的配置文件是
vite.config.js,在这个文件中,你可以通过server.proxy来设置开发服务器的代理。代理将会把请求转发到指定的目标服务器,从而解决跨域问题。示例:
// vite.config.js import { defineConfig } from 'vite'; export default defineConfig({ server: { proxy: { '/api': { target: 'http://localhost:5000', // 后端 API 地址 changeOrigin: true, // 改变请求源,避免 CORS 问题 secure: false, // 如果是https接口,需要配置为false rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径,去掉/api前缀 }, }, }, }); -
解释配置项:
server.proxy: 这是配置代理的部分。/api: 这里的/api是前端请求的路径前缀,可以根据需求自定义,比如如果前端请求/api/*,这些请求会被代理到目标服务器。target: 后端的服务器地址(例如http://localhost:5000),即请求要代理到的目标服务器。changeOrigin: 设置为true,表示将请求头中的Origin字段改为目标服务器的地址,避免 CORS 问题。secure: 如果目标服务器是https协议且没有合法证书,可以设置为false,否则保持默认true。rewrite: 可以用来重写请求路径,去掉前缀/api,让后端接收到/路径的请求。
-
运行项目
配置完成后,使用以下命令启动 Vite 开发服务器:
npm run dev所有以
/api开头的请求将被代理到http://localhost:5000,并且请求路径会被rewrite转换。
4. 复杂的代理配置
你可以根据项目的需求,配置多个代理规则,也可以处理路径、请求头等更复杂的需求。
多个代理规则:
// vite.config.js
import { defineConfig } from 'vite';
export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://localhost:5000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
'/auth': {
target: 'http://localhost:4000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/auth/, ''),
},
},
},
});
修改请求头:
如果需要在代理中修改请求头,可以使用 configure 选项:
// vite.config.js
import { defineConfig } from 'vite';
export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://localhost:5000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
configure: (proxy) => {
// 可以配置代理时的其他选项,例如请求头
proxy.on('proxyReq', (proxyReq) => {
proxyReq.setHeader('Authorization', 'Bearer your-token');
});
},
},
},
},
});
5. 总结
- 在 Vite 中,跨域问题通过在
vite.config.js中配置server.proxy来解决。 - 使用
server.proxy可以将特定路径(如/api)的请求代理到后端服务器,从而避免浏览器的跨域限制。 - 配置选项包括
target、changeOrigin、rewrite和secure等,可以根据实际需求调整。
注意事项:
- 代理只在开发环境中生效,生产环境部署时通常需要通过后端配置 CORS 或使用 Nginx 等服务器进行代理。
- Vite 默认使用了快速的
esbuild打包工具,配置代理后,可以直接在本地开发时模拟真实的后端 API。