返回

Vite设置好Proxy后,接口却404的完美解决方案!

前端

前言

最近使用Vue3+Vite+TypeScript进行项目开发时,在配置好Vite的代理(Proxy)后,却发现接口总是返回404错误。经过一番探索,终于找到了完美的解决方案,让接口重获新生!

问题根源

当我们设置好Vite的代理后,会将前端请求重定向到指定的代理目标(一般是后端服务器地址)。但是,如果后端服务器没有正确配置跨域访问,就会导致前端请求被浏览器拦截,从而返回404错误。

解决方案

要解决这个问题,需要在后端服务器上配置CORS(跨域资源共享)头。CORS头允许后端服务器指定哪些域可以访问其资源,从而解决跨域问题。

具体配置方法如下:

  1. 修改后端服务器代码 :在响应头中添加以下CORS头:

    Access-Control-Allow-Origin: <前端应用的域>
    Access-Control-Allow-Headers: <允许前端请求携带的头信息,例如Content-Type>
    Access-Control-Allow-Methods: <允许前端请求的方法,例如GET、POST>
    
  2. 重启后端服务器 :修改后,需要重启后端服务器,以使CORS头生效。

示例代码

以Node.js Express框架为例,修改后的代码如下:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Methods', 'GET, POST');
  next();
});

app.get('/api/v1/users', (req, res) => {
  res.json([{ id: 1, name: 'John Doe' }]);
});

app.listen(3000);

其他注意事项

除了配置CORS头,还有一些其他注意事项需要考虑:

  • 确保前端应用的域与CORS头中指定的域匹配。
  • 如果后端服务器使用HTTPS,则前端应用也必须使用HTTPS。
  • 如果出现跨域问题,请检查浏览器的控制台,了解有关错误的详细信息。

结语

通过上述方法,你可以完美解决Vite设置好Proxy后,接口却404的问题。希望本文能为你带来帮助,让你的项目开发更加顺畅!