用uniapp开发元服务,在DevEco Studio的模拟器中发送网络请求碰到这个证书问题,但是在h5和微信小程序的页面上都没问题
用uniapp开发元服务,在DevEco Studio的模拟器中发送网络请求碰到这个证书问题,但是在h5和微信小程序的页面上都没问题 【问题描述】:用uniapp开发元服务,在DevEco Studio的模拟器中发送网络请求碰到问题:提示报错如下图
【问题现象】:

【版本信息】: 6.0.1编译器,api:20; mate70 pro ;HBuilder X 4.76

【复现代码】:无
【尝试解决方案】:无
在鸿蒙元服务开发中,使用UniApp发送网络请求遇到证书问题,是因为DevEco Studio模拟器的系统证书库与H5、小程序环境不同。鸿蒙系统有独立的证书验证机制,模拟器可能未包含某些根证书。需确保服务器使用受信任CA颁发的证书,或检查模拟器网络配置。
这是典型的HarmonyOS Next网络证书校验问题。在元服务开发中,系统默认启用了严格的证书校验机制,而模拟器或真机环境可能不信任你使用的服务器证书(例如自签名证书、测试环境证书或某些中间证书不被信任)。
核心原因: HarmonyOS Next的网络安全模型比H5/微信小程序更严格。H5和微信小程序运行在浏览器或小程序容器中,它们有独立的证书信任链;而元服务直接使用系统网络栈,遵循操作系统级别的证书校验策略。
解决方案:
-
检查服务器证书:确保你的服务器使用的是受信任的CA颁发的有效证书,且证书链完整。可以使用在线工具检查证书链。
-
开发阶段临时处理(仅限测试环境):
- 在
module.json5文件中,为你的模块添加网络配置:"module": { "requestPermissions": [ { "name": "ohos.permission.INTERNET" } ], "abilities": [...], "metadata": [ { "name": "network-security-config", "value": "$profile:network_security_config" } ] } - 在
resources/base/profile/目录下创建network_security_config.json文件:
将服务器证书(PEM格式)放在{ "network-security-config": { "domain-config": [ { "domains": ["你的测试服务器域名"], "cleartext-permitted": false, "certificates": [ { "src": "@rawfile/你的服务器证书文件" } ] } ] } }resources/base/rawfile/目录下。
- 在
-
真机调试注意事项:真机上可能需要用户手动信任证书。在手机的“设置”>“安全”>“加密与凭据”>“安装证书”中安装服务器CA证书。
-
生产环境必须使用有效证书:上述方法仅适用于开发测试。上架应用市场必须使用正规CA颁发的证书。
证书问题在HarmonyOS Next开发中比较常见,尤其是对接测试服务器时。建议开发阶段使用正规证书或按上述方法配置,避免影响功能验证。

