📌  相关文章
📜  net::ERR_CLEARTEXT_NOT_PERMITTED (WebResourceErrorType.unknown -1) (1)

📅  最后修改于: 2023-12-03 15:03:09.698000             🧑  作者: Mango

错误主题:net::ERR_CLEARTEXT_NOT_PERMITTED (WebResourceErrorType.unknown -1)

介绍

该错误提示是由于应用程序尝试从一个不安全的HTTP连接升级到HTTPS连接,而操作系统不允许进行此操作,因此会触发此错误。这是为了保持应用程序的安全性。

这意味着您的应用程序需要注意以下几点:

  1. 使用的Web请求必须在https协议下进行
  2. 需要在应用程序中配置网络安全性规则
  3. 公司HTTPS证书必须被信任
针对Android平台的配置

在 AndroidManifest.xml 文件中,使用 <application> 元素指定网络安全性规则。

<application 
    android:usesCleartextTraffic="true">
    ...
</application>

如果您的应用程序使用了Android Pie或更高版本,请在AndroidManifest.xml文件中使用以下XML配置:

<application
  android:label="@string/app_name"
  android:networkSecurityConfig="@xml/network_security_config">
  ....
</application>

network_security_config是一个XML文件,定义应用程序的网络安全设置。

<network-security-config>
  <base-config cleartextTrafficPermitted="false">
    <trust-anchors>
      <certificates src="@raw/my_cert" />
    </trust-anchors>
  </base-config>
</network-security-config>

以下是配置文件的含义:

  • cleartextTrafficPermitted:如果设置为 false,则应用程序将不允许进行不安全的HTTP连接
  • trust-anchors: 证书绝对路径,直到raw目录

如果您使用的是较早版本的Android平台,则可以使用以下XML配置:

<application
  android:label="@string/app_name">
  <uses-library android:name="org.apache.http.legacy" android:required="false" />
  ....
</application>
针对iOS平台的配置

iOS开发者可以在应用程序的环境中配置以下内容,例如 info.plst.

<key>NSAppTransportSecurity</key>
  <dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

NSAllowsArbitraryLoads 设置为 true 允许您的应用程序从不安全的HTTP连接升级到安全的HTTPS。

如果您希望让应用程序只与特定的域进行通信,请使用以下XML配置:

<key>NSAppTransportSecurity</key>
  <dict>
  <key>NSExceptionDomains</key>
    <dict>
      <key>yourdomain.com</key>
      <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSExceptionRequiresForwardSecrecy</key>
        <false/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
      </dict>
    </dict>
</dict>
结论

当您遇到 net::ERR_CLEARTEXT_NOT_PERMITTED (WebResourceErrorType.unknown -1) 这个问题时,请遵循以上几点进行配置,并确保您的应用程序的HTTPS证书受到信任,这样可以避免安全性问题并确保您的应用程序的稳定性。