uni-app怎么解决H5跨域请求报错 uni-app前端开发环境代理【配置】

畫卷琴夢

畫卷琴夢

2026-04-17

387人浏览

原创

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

uni-app怎么解决h5跨域请求报错 uni-app前端开发环境代理【配置】

uni-app H5开发时请求后端接口报 CORS 错误怎么办

直接说结论:H5 模式下 uni.request 发出的请求走的是浏览器原生 XMLHttpRequest,不经过本地 devServer 代理,所以配置 vue.config.jsdevServer.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.jsdevServer.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。

面向设计的AXUI前端框架表单
面向设计的AXUI前端框架表单

面向设计的AXUI前端框架表单是一款包含表格、列表、弹窗等的AXUI前端框架表单下载。

下载

为什么 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实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1111

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2285

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2155

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2346

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

357

5

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

1653

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

629

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

5112

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

4623

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习