uni-app H5跨域问题解决方案(CORS、Cross-Origin)

本文详细介绍了uni-app在H5平台上遇到的跨域问题及其解决方案,包括前端调用unicloud云函数和连接传统后台服务器的场景。讨论了部署时和调试时的跨域策略,如通过HBuilderX内置浏览器、webpack-dev-server代理和浏览器插件Allow-Control-Allow-Origin:*。同时提醒读者,此插件仅适用于本地调试,线上部署还需服务端配合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是跨域

跨域是浏览器的专用概念,指js代码访问自己来源站点之外的站点。比如A站点网页中的js代码,请求了B站点的数据,就是跨域。
A和B要想被认为是同域,则必须有相同的协议(比如http和https就不行)、相同域名、和相同端口号(port)。

如果你是做App、小程序等非H5平台,是不涉及跨域问题的。
稍微例外的是iOS的wkWebview,在5+App,或uni-app的web-view组件及renderjs中,由于WKWebview限制也会产生跨域,这方面另见专题文章:https://ask.dcloud.net.cn/article/36348。uni-app在App的普通js代码不运行在Webview下,不存在跨域问题。

由于uni-app是标准的前后端分离模式,开发h5应用时如果前端代码和后端接口没有部署在同域服务器,就会被浏览器报跨域。

如果前端要callfunction连接unicloud云函数

在h5页面里callfunction会跨域,此时需在unicloud的web控制台配置域名白名单,被加白的域名可以跨域callfunction。详见:https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=useinh5

另外运行期间在HBuilderX的内置浏览器里是不存在跨域的。

如果前端要连接传统后台服务器

分部署时的跨域方案和调试时的跨域方案,具体见下:

部署时的跨域解决方案

  • 方案1:最利索的,当然还是将前端代码和后端接口部署在同域的web服务器上
  • 方案2:由后台服务器配置策略,设为允许跨域访问。

例如:前端页面部署在uniCloud的前端页面托管里,但是需要访问自己服务器

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值