sslVerify: false 仅在 app-plus 调试基座(HBuilderX 运行时)部分生效,离线打包后无效;H5 和小程序完全不支持该字段,其证书校验由浏览器或平台强制管控。

不能靠 sslVerify: false 一招鲜解决所有平台 —— 它在 App 端(尤其离线打包 Android/iOS)大概率无效,H5 和小程序也不支持该字段。
uni.request 的 sslVerify 在哪些平台生效?
这个字段只在 app-plus 平台的「调试基座」中部分生效(HBuilderX 运行时),且仅限某些旧版本;离线打包后基本被原生层忽略。H5 环境下该字段直接被丢弃,小程序平台压根不识别它。
常见误判:看到 H5 请求成功,就以为 sslVerify: false 生效了 —— 实际是浏览器自己处理了证书,跟 uni-app 无关。
Android 离线打包必须嵌入证书
当报错 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found,说明 Android 原生网络栈找不到可信根证书。此时 sslVerify: false 不起作用,必须把自签名或私有 CA 证书以二进制形式放入 APK:
• 将 PEM 格式证书(如 ca.crt)放入 nativeResources/android/assets/ 目录
• 修改 android/app/src/main/res/xml/network_security_config.xml(需离线打包时手动配置)
• 或使用 DCloud 提供的证书白名单机制(需在 manifest.json 中配置 app-plus.android.trustCerts 字段,值为证书文件名数组)
• 重新完整离线打包,热更新或云打包无法注入证书
iOS 需绕过 ATS 并禁用证书校验
iOS 的证书校验由系统级 ATS(App Transport Security)控制,uni-app 无法通过 JS 层跳过。
必须修改 manifest.json 中的 app-plus.ios.plist:
• 添加 NSAppTransportSecurity → NSAllowsArbitraryLoads = true
• 同时建议补充 NSExceptionDomains 白名单(如仅对测试域名放宽)
• 注意:Xcode 15+ 对 NSAllowsArbitraryLoads 有更严审核,提交 App Store 前必须移除
• 修改后需重新离线打包,真机调试时若仍失败,请确认 Xcode 工程中 Info.plist 是否被正确合并
H5 和小程序端根本没法“跳过”证书校验
H5 请求走浏览器引擎,证书校验由 Chrome/Safari 决定 —— 如果你在浏览器里访问接口地址显示“不安全”,uni-app 的 H5 版本必然失败。
小程序同理:微信强制校验证书链、TLS 版本(必须 ≥1.2)、域名备案及 HTTPS 有效状态。
唯一可行路径:
• H5:确保 dev server 启用 HTTPS(npm run dev:h5 -- --https),并安装生成的 cert.pem 到系统钥匙串/受信任根证书
• 小程序:后端证书必须由权威 CA 签发,且不能用通配符泛域名(除非子域名单独备案)
• 所有平台都不要尝试用代理或 header 欺骗(比如传 x-uniauth)—— 这类方案已被 DCloud 多次声明不支持,且在新版 SDK 中失效
真正要动手改的不是 JS 请求代码,而是服务器证书部署、manifest.json 配置、离线打包资源目录和 iOS Info.plist —— 把这些地方漏掉一个,sslVerify: false 就只是个安慰剂。


















