Q: 如何在 Vite 开发环境中解决跨域问题?proxy 配置怎么写?
跨域 (CORS) 也适用于开发环境。虽然浏览器限制了 ajax 请求必须同源,但服务器之间的通讯不受限制。 Vite 基于 Node.js,可以开启一个 反向代理服务器 (Reverse Proxy Server)。
在 vite.config.ts 中配置代理规则:
解释:
http://localhost:3000/api/users。/api 前缀。http://jsonplaceholder.typicode.com/users (因为 rewrite 移除了 /api)。这个配置仅在开发环境有效。如果你构建打包 (npm run build) 后部署到 Nginx 上,你需要配置 Nginx 的反向代理规则,和这里的逻辑是一样的。
或者如果是同域部署 (Same Origin),就不需要代理了。
changeOrigin: true 是干嘛的?有些后端服务器会检查请求头中的 Host 字段,以此来防止域名欺诈。如果 changeOrigin 为 false (默认),发送过去的 Host 头就是 localhost:3000。后端可能直接拒绝。设置为 true 后,代理服务器会将 Host 头修改为目标服务器的域名 (jsonplaceholder.typicode.com),让后端认为是一个合法的请求。