uniApp h5解决Chrome跨域问题的最终方法

最近用Dcloud 工具 HBuilder X写了一个uniapp 客户端项目,代码在HBuilder 工具内运行没有问题, 打包后放在android app 和ios app内运行也没有问题,唯有把h5链接地址放在chrome里会有如下跨域问题:

Access to XMLHttpRequest at 'https://www.yachen.com/api/auth/sendinfo' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

跨域是浏览器的专用概念,指js代码访问自己来源站点之外的站点。比如A站点网页中的js代码,请求了B站点的数据,就是跨域。

A和B要想被认为是同域,则必须有相同的协议(比如http和https就不行)、相同域名、和相同端口号(port)。

如果你是做App、小程序等非H5平台,是不涉及跨域问题的。而Hbuilder 内置浏览器把检查跨域那部分屏蔽,所以在内部web运行时也不存在跨域问题。

关于这个跨域问题,网上有两种解决方法:

  1. 给Chrome 安装插件Allow CORS: Access-Control-Allow-Origin ,网上有很多安装示例,无奈我尝试了半天,插件也安装了,错误照旧,不知道哪里出问题了;
  2. 这种方法是给项目代码加代理,在根目录下添加配置文件vue.config.js, 按照网上的方法一步一步配置,仍然不行,后来把vue.config.js 改为vue.config.json 反而可以了。

配置代码如下

module.exports = {

publicPath: './h5',

devServer: {

proxy: {

'/woch': {

target: 'https://www.yachen.com',

ws: true,

changeOrigin: true,

pathRewrite: {

'^/woch': ''

}

}

}

},

}

代码里的绝对url路径改为相对路径,譬如以前有问题的代码

uni.request({

url: ' https://www.yachen.com/api/sendinfo', //仅为示例,并非真实接口地址。

data: {//参数

......

},

header: {

......

},

method:'POST',//请求方式 或GET,必须为大写

});

将里面的url

url: ' https://www.yachen.com/api/sendinfo ',

改为

url: 'woch/api/sendinfo',

这样所有url绝对路径都改完后,加上根目录的配置文件 vue.config.json,再次编译生成的链接地址在Chrome打开,一切运行正常,再也没有上面的跨域问题

相关推荐
随风一样自由5 分钟前
【AI全栈+前端代理】前端代理配置中最常用的参数及说明
前端·前端代理
这是个栗子16 分钟前
uni-app 微信小程序开发:常用事件指令(@xxx)(一)
微信小程序·小程序·uni-app
Lorin 洛林1 小时前
一文读懂 Agent Skills
前端·网络
newbe365242 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
KaMeidebaby9 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
kyriewen10 小时前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
JNX_SEMI10 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion11 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由11 小时前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子11 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all