当前位置: 首页 > article >正文

uniapp 解决 H5 跨域问题

使用 uniapp 开发 H5 应用时,若后端没有配置请求域名白名单则接口会出现 CORS 跨域问题,示例如下:

Access to XMLHttpRequest at 'http://www.baidu.cn/api/login' from origin 'http://localhost:5054' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.

此时前端可通过如下步骤配置解决此问题:

配置manifest.json文件

找到项目根目录中的 manifest.json 文件,打开该文件点击“源码视图”,在第一对 {} 中对 H5 平台配置代理服务器:

"h5": {
		"devServer": {
			"port": 5054, // 可自行修改,不和其他项目冲突即可(修改后需重新运行项目)
			"disableHostCheck": true,
			"proxy": {
				// 配置代理服务器来解决跨域问题,uniapp不适用CORS方案和设置JSONP方案
				"/api/": {
					// 映射域名
					"target": "http://www.baidu.cn", // 目标接口路径
					"changeOrigin": true,
					"secure": false,
					"pathRewrite": {
						"^/api": ""
					}
				}
			}
		},
		"optimization": {
			"treeShaking": {
				"enable": true
			}
		}
	}

配置请求文件的baseURL

还需要再修改项目中的全局请求的根域名,假设你的项目中全局的接口请求配置文件为 request.js 文件,示例代码如下:

// 初始化请求配置
uni.$u.http.setConfig((config) => {
	/* config 为默认全局配置*/
	// config.baseURL 用于配置项目请求的根域名
	// #ifdef H5
	config.baseURL = `http://192.168.0.2:5054/`; /* H5 平台需要使用本机IPV4+端口号的本地路径 */
	// #endif
	// #ifndef H5
	config.baseURL = `http://www.baidu.cn/`; /* 非 H5 平台则直接使用接口路径 */
	// #endif
	// 其他配置...
	config.custom.toast = true // 默认消息有msg会显示出来
	return config
})

注1:以上 request.js 文件的全局请求配置写法来源于 uview-plus 框架的 http 请求的全局配置示例。

注2:若需示例中的源码可访问 码云 uniapp-vue3-js 项目开发模板。


http://www.kler.cn/a/571626.html

相关文章:

  • 基于Swintransformer与对称性损失函数的3D人体姿态估计
  • 论文插图绘制|R语言绘制瀑布图,展示高频突变基因在样本中的分布模式|25-03-04
  • 自动化学习-使用git进行版本管理
  • php的笔记(更新中)
  • 电子电气架构 --- 拓扑架构集中的趋势及其演变
  • RK3568平台(网络篇)RTL8111网卡
  • 【Elasticsearch】修改数据流(Data Stream)
  • 蓝桥云客 跑步
  • AI编程,常见的AI编程工具有哪些?如何用AI编程做一个简单的小软件?
  • Pycharm配置ROS开发环境
  • CSS_复合选择器
  • 【前沿 热点 顶会】CVPR 2025 录用的与图像|视频恢复、抠图、超分辨率、3D生成有关的论文
  • c++ cout详解
  • 【每日八股】MySQL篇(七):日志(上)
  • flink和yarn和mpp架构区别
  • Vue 调用摄像头扫描条码
  • windows 安装Android Studio
  • FreeRTOS系列---程序正常,但任务无法创建
  • Ubuntu20.04双系统安装及软件安装(五):VSCode
  • 【数据分析】上市公司市场势力数据测算+dofile(1992-2023年)