You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native使用react-native-pdf报ReactNativeBlobUtil请求错误如何解决

问题根因

这个报错是Android平台专属的依赖层异常,和PDF文件本身的解析逻辑无关,触发逻辑如下:

  • react-native-pdf组件的本地/网络文件拉取能力依赖react-native-blob-util库实现,当该库处理HTTPS请求时,如果代码里开启了自定义证书信任逻辑(比如配置了忽略SSL校验、自定义证书白名单),但没有传入对应的TrustManager实现类,Android系统的网络安全校验机制就会抛出IllegalStateException: Use of own trust manager but none defined异常。

常见触发场景:

  • 加载的PDF资源存储在使用自签名SSL证书的HTTPS服务器上,手动修改了react-native-blob-util的全局网络配置,但没有补全自定义信任管理器的实现
  • 本地安装的react-native-pdf和react-native-blob-util版本不兼容,高版本react-native-blob-util调整了SSL校验的默认传参规则,旧版PDF组件传入的空配置触发了校验逻辑
  • Android 12及以上版本的应用未配置网络安全规则,和库的证书校验逻辑产生冲突
修复方案

按优先级从高到低尝试以下方案:

  • 版本对齐修复(90%以上的场景可通过该方案解决)
    两个依赖的版本不匹配是最高发的诱因,直接锁定兼容的稳定版本重新安装即可:
    # npm 用户执行
    npm install react-native-pdf@latest react-native-blob-util@0.19.2
    # yarn 用户执行
    yarn add react-native-pdf@latest react-native-blob-util@0.19.2
    
    依赖安装完成后进入Android工程目录执行./gradlew clean清理旧构建缓存,重新打包运行即可。
  • 自签名证书场景适配
    如果业务确实需要加载存放在自签名证书服务器上的PDF资源,不要直接全局关闭SSL校验,将服务端证书文件放到Android工程的app/src/main/res/raw目录下,在react-native-blob-util的请求配置中传入对应证书的信任规则,不要留空的自定义TrustManager配置项。
  • 系统网络安全配置适配
    打开Android工程的app/src/main/AndroidManifest.xml文件,在<application>标签上添加属性:
    android:networkSecurityConfig="@xml/network_security_config"
    
    随后在app/src/main/res/xml目录下新建network_security_config.xml文件,写入对应配置:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
          <certificates src="system" />
        </trust-anchors>
      </base-config>
      <domain-config>
        <domain includeSubdomains="true">替换为你存放PDF的业务域名</domain>
        <trust-anchors>
          <certificates src="system" />
          <certificates src="user" />
        </trust-anchors>
      </domain-config>
    </network-security-config>
    
  • 测试环境临时规避(禁止用于生产包)
    本地调试阶段如果不想配置证书,可以打开node_modules/react-native-blob-util/android/src/main/java/com/RNReactNativeBlobUtil/RNReactNativeBlobUtilReq.java文件,注释掉自定义TrustManager的初始化代码,强制使用系统默认的证书信任逻辑即可,调试完成后记得回退该修改,避免带来安全风险。

内容的提问来源于stack exchange,提问作者راجہ مخلص

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:48:22