h5模式下uni.request不走vue.config.js的devserver.proxy代理,必须改用axios/fetch配合该代理,或由后端配置cors,上线时需确保接口同源或nginx反向代理。

uni-app H5开发时请求后端接口报 CORS 错误怎么办
直接说结论:H5 模式下 uni.request 发出的请求走的是浏览器原生 XMLHttpRequest,不经过本地 devServer 代理,所以配置 vue.config.js 的 devServer.proxy 对 H5 无效——这是最常被误解的一点。
真正生效的代理只对「非 H5 平台」(如微信小程序、App)起作用,它们由 uni-app 编译层在运行时做请求拦截和转发。H5 必须靠浏览器同源策略允许的方式解决,要么后端配 CORS,要么前端改用 H5 专用代理方案。
uni-app H5 模式下正确配置 webpack-dev-server 代理(vue.config.js)
虽然 uni.request 在 H5 不走这个代理,但你可以把接口请求改成用 axios 或原生 fetch,再配合 vue.config.js 的 devServer.proxy 实现开发期跨域。这是最常用、最可控的方案。
-
vue.config.js中必须导出对象,且devServer配置仅在npm run serve(即 H5 开发模式)下生效 - 代理目标地址不能带路径,只写协议+域名+端口,例如
http://localhost:3000,否则重写规则可能失效 - 路径重写要用
pathRewrite(v4+ webpack-dev-server),旧版用onProxyReq,uni-app 默认用的是较新版本,推荐用pathRewrite - 务必加
changeOrigin: true,否则 Host 头不替换,后端可能拒绝请求
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
配好后,在代码里用 axios.get('/api/users') 就能访问 http://localhost:3000/users,浏览器看到的是同源请求,不会触发 CORS。
为什么 uni.request 在 H5 下不走 vue.config.js 代理
因为 uni.request 是 uni-app 封装的统一 API,在 H5 平台它底层就是调用 XMLHttpRequest,完全走浏览器网络栈,绕过了 webpack-dev-server 的代理中间件。你改了 devServer.proxy,它根本不知道、也不需要知道。
- 小程序平台下,
uni.request被编译成wx.request,由微信客户端处理,此时 uni-app 可以在构建阶段注入代理逻辑(比如通过 manifest.json 的h5.devServer配置,但那只是给 H5 页面本身用,不影响请求) - H5 模式下,所有
uni.request请求都会被发往你写的完整 URL,比如uni.request({ url: 'https://api.example.com/login' }),浏览器直接发出,没有中间代理环节 - 如果你坚持用
uni.request,唯一办法是让后端响应头带上Access-Control-Allow-Origin: *(或指定域名),否则必报错CORS policy: No 'Access-Control-Allow-Origin' header
上线前必须注意的真实跨域场景
开发期用代理能糊弄过去,但上线部署到真实域名(比如 https://myapp.com)后,代理配置彻底失效。这时候如果还用 /api 这种相对路径发请求,实际会向 https://myapp.com/api 发,而非你的后端地址——除非你把后端接口也部署在同一域名下,否则仍会跨域。
- 上线前要把所有接口地址改为绝对 URL,并确保该域名已配置好 CORS 或反向代理(Nginx / CDN 层)
- 不要依赖
process.env.NODE_ENV === 'development'动态切接口 baseURL,容易漏测;建议用配置文件(如config/index.js)统一管理 - 如果后端无法配 CORS,又不想暴露真实接口地址,只能在 Nginx 层做反向代理,把
/api转发到后端服务,这样前端始终同源
代理配置只是开发期便利手段,不是跨域问题的银弹。真要稳定,得从前端请求方式、构建配置、部署架构三层一起看,漏掉任何一层都可能在线上突然报错。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











