为什么带有明文的HTTP流量错误ERR_CLEARTEXT_NOT_PERMITTED持续存在?

ljv*_*alm 3 android cordova ionic-framework

我正在使用Ionic-framework开发一个新应用,并且正在使用HttpClient模块来处理API请求。

问题是我已阅读并尝试将解决方案应用于:

  1. https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6
  2. https://forum.ionicframework.com/t/livereload-err-cleartext-not-permitted/163487
  3. Android 8:不允许使用明文HTTP流量
  4. 升级到Cordova Android 8后,为什么会看到net :: ERR_CLEARTEXT_NOT_PERMITTED错误?
  5. 如何在颤抖中修复'net :: ERR_CLEARTEXT_NOT_PERMITTED'
  6. Android Pie:WebView在某些站点上显示纯HTTP错误,即使使用useClearTextTraffic =“ true”
  7. WebView显示ERR_CLEARTEXT_NOT_PERMITTED,尽管站点是HTTPS

但是我的应用程序在对API进行查询时始终抛出此错误。

这是我的文件的详细信息:

/时,config.xml中

    <?xml version='1.0' encoding='utf-8'?>
<widget id="com.example" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    ...
    <platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config"/>
            <application android:usesCleartextTraffic="true" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
     ...
</widget>
Run Code Online (Sandbox Code Playgroud)

/ resources / android / xml /中network_security_config.xml

    <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

使用安全加密的协议HTTPS是无效的。该API仅允许使用HTTP。

Gvs*_*hil 7

  1. 确保您config.xml在Ionic Project中具有以下内容:

    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
                <application android:networkSecurityConfig="@xml/network_security_config" />
                <application android:usesCleartextTraffic="true" />
            </edit-config>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行ionic Cordova构建android。它在Platforms下创建Android文件夹

  3. 打开Android Studio并打开我们的项目project-platforms-android中存在的Android文件夹。留下几分钟,以便建立gradle

  4. gradle build完成后,我们得到了一些错误的,包括minSdVersionmanifest.xml。现在,我们要做的只是<uses-sdk android:minSdkVersion="19" />从中删除manifest.xml

    确保从两个位置都将其删除:

    1. 应用→清单→ AndroidManifest.xml
    2. CordovaLib→显示→ AndroidManifest.xml

    现在尝试再次构建gradle,现在可以成功构建

  5. 确保在App→清单→中的Application标签中具有以下内容Androidmanifest.xml

    <application
    android:networkSecurityConfig="@xml/network_security_config"  android:usesCleartextTraffic="true" >
    
    Run Code Online (Sandbox Code Playgroud)
  6. 打开network_security_config(应用程序→res→xml→ network_security_config.xml)。

    添加以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">xxx.yyyy.com</domain>
        </domain-config>
    </network-security-config>
    
    Run Code Online (Sandbox Code Playgroud)

xxx.yyyy.com是您的HTTP API的链接。确保在URL之前不包含任何Http。

注意:现在使用Android Studio来构建应用程序(构建-Build Bundle's / APK-Build APK),现在您可以使用该应用程序了,它在Android Pie中可以正常工作。如果您尝试使用ionic Cordova build android来构建应用程序,它将覆盖所有这些设置,因此请确保您使用Android Studio来构建Project。

如果您安装了任何较旧版本的应用程序,请卸载它们并尝试一下,否则将出现一些错误:

未安装应用


归档时间:

查看次数:

4718 次

最近记录:

6 年,2 月 前