HarmonyOS鸿蒙Next中关于模拟器网络请求问题

HarmonyOS鸿蒙Next中关于模拟器网络请求问题

场景一

在用封装的 axios 访问接口时,本地起了接口,axios实例必须要写局域网中的本机ip,写127.0.0.1或者loclhost就请求不了(我的本地后端根本就没接收到请求);

场景二

本地起接口,用内网穿透工具(远程服务器没有配证书)映射到本地的接口项目,axios 实例写的远程服务器的ip,这时能正常请求(没有报错),前端也确实获取到了返回的东西;

场景三

但是,当我将接口项目部署至远程(远程服务器没有配证书)之后,浏览器实测接口文档中接口能正常访问;axios 实例中写的是远程ip,请求的时候远程服务器的日志确实请求到了(没有报错),但是前端依旧报错

说明:以上场景只改了 axios 实例中的请求地址ip,其余所有代码没动

问题

对于以上场景,想问一下子模拟器的网络请求严格需要配证书 https 请求吗?如果确实是需要的话,那为什么场景二中远程服务器内网穿透到本地又没有问题呢?


更多关于HarmonyOS鸿蒙Next中关于模拟器网络请求问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

场景一

模拟器是独立运行环境,与本地开发机处于不同网络环境,127.0.0.1 或 localhost 指向模拟器自身而非宿主机。本地接口需通过宿主机局域网 IP访问,确保模拟器与宿主机在同一局域网

解决方案:使用宿主机实际局域网 IP 作为请求地址,而非 localhost

场景二

内网穿透工具默认启用 HTTPS 加密隧道,间接规避了 HTTP 明文传输限制。部分穿透工具自带证书或模拟器对特定穿透服务兼容性较好,未触发 HTTPS 强校验。

场景三

鸿蒙模拟器在 API Level 较高版本中强制要求 HTTPS,直接访问未配置证书的 HTTP 接口会因安全策略拦截。若远程服务器未配置有效证书(如自签名证书未安装到模拟器),导致 TLS 握手失败。

为何场景二可行?

内网穿透工具可能绕过限制:自动启用 HTTPS;穿透工具本身预置证书或兼容性适配。

解决方案

1/配置 HTTPS 证书:为远程服务器部署合法证书;若为测试环境,可生成自签名证书并安装到模拟器或设备(通过 设置 → 安全 → 安装证书)

2/检查网络安全策略

// Axios 请求配置示例

axios.request({

  url: 'https://your-remote-api',

  method: 'get',

  // 若支持,可尝试关闭证书校验

  httpsAgent: { rejectUnauthorized: false }

})

排查跨域问题:确保远程服务器响应头包含

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: GET, POST, PUT

Access-Control-Allow-Headers: Content-Type

更多关于HarmonyOS鸿蒙Next中关于模拟器网络请求问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


太强了,哥,

axios 配置 proxy , 配合 charles 使用。

  //  `proxy`
  // 是否使用HTTP代理,默认为false,不使用代理。
  // 当proxy为AxiosProxyConfig类型时,使用指定网络代理。
  proxy: {
      host: '192.168.2.1', // Host port
      port: 8888, // Host port
      exclusionList: [] // Do not use a blocking list for proxy servers
  }

鸿蒙Next模拟器网络请求基于分布式软总线技术实现。网络请求需使用鸿蒙提供的@ohos.net.http模块,支持HTTP/HTTPS协议。配置网络权限需在module.json5中声明ohos.permission.INTERNET权限。模拟器默认共享主机网络,若遇连接问题可检查防火墙设置或尝试重启模拟器。

在HarmonyOS Next模拟器中,网络请求确实需要HTTPS协议,这是出于安全策略的强制要求。模拟器默认只允许加密连接,因此HTTP请求会被拦截。

场景二中内网穿透能正常请求,可能是因为穿透工具在转发过程中处理了协议转换或模拟器未严格校验中间代理的证书。但直接访问未配置证书的远程服务器(场景三)会因证书缺失导致TLS握手失败,前端无法解密响应数据从而报错。

建议为远程服务器配置有效的SSL证书,或使用开发环境下的临时证书(如自签名证书并在模拟器中信任),以确保HTTPS请求正常完成。

回到顶部