用uniapp开发元服务,在DevEco Studio的模拟器中发送网络请求碰到这个证书问题,但是在h5和微信小程序的页面上都没问题

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

【问题现象】:

cke_665.png

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

cke_842.png

【复现代码】:无

【尝试解决方案】:无


2 回复

在鸿蒙元服务开发中,使用UniApp发送网络请求遇到证书问题,是因为DevEco Studio模拟器的系统证书库与H5、小程序环境不同。鸿蒙系统有独立的证书验证机制,模拟器可能未包含某些根证书。需确保服务器使用受信任CA颁发的证书,或检查模拟器网络配置。


这是典型的HarmonyOS Next网络证书校验问题。在元服务开发中,系统默认启用了严格的证书校验机制,而模拟器或真机环境可能不信任你使用的服务器证书(例如自签名证书、测试环境证书或某些中间证书不被信任)。

核心原因: HarmonyOS Next的网络安全模型比H5/微信小程序更严格。H5和微信小程序运行在浏览器或小程序容器中,它们有独立的证书信任链;而元服务直接使用系统网络栈,遵循操作系统级别的证书校验策略。

解决方案:

  1. 检查服务器证书:确保你的服务器使用的是受信任的CA颁发的有效证书,且证书链完整。可以使用在线工具检查证书链。

  2. 开发阶段临时处理(仅限测试环境):

    • 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 文件:
      {
        "network-security-config": {
          "domain-config": [
            {
              "domains": ["你的测试服务器域名"],
              "cleartext-permitted": false,
              "certificates": [
                {
                  "src": "@rawfile/你的服务器证书文件"
                }
              ]
            }
          ]
        }
      }
      
      将服务器证书(PEM格式)放在 resources/base/rawfile/ 目录下。
  3. 真机调试注意事项:真机上可能需要用户手动信任证书。在手机的“设置”>“安全”>“加密与凭据”>“安装证书”中安装服务器CA证书。

  4. 生产环境必须使用有效证书:上述方法仅适用于开发测试。上架应用市场必须使用正规CA颁发的证书。

证书问题在HarmonyOS Next开发中比较常见,尤其是对接测试服务器时。建议开发阶段使用正规证书或按上述方法配置,避免影响功能验证。

回到顶部