Почему ошибка ERR_CLEARTEXT_NOT_PERMITTED с открытым текстом для HTTP-трафика сохраняется? - PullRequest
0 голосов
/ 04 июня 2019

Я разрабатываю новое приложение с использованием Ioonic-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. Почему я вижу ошибки net :: ERR_CLEARTEXT_NOT_PERMITTED после обновления до Cordova Android 8?
  5. Как исправить 'net :: ERR_CLEARTEXT_NOT_PERMITTED' в флаттере
  6. Android Pie: WebView показывает ошибку для простого HTTP на некоторых сайтах, даже при использовании ClearTextTraffic = "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>

в / 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>

Недопустимо использовать надежно зашифрованный протокол HTTPS. API допускает только HTTP.

1 Ответ

1 голос
/ 04 июня 2019
  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>
    
  2. Запуск ионной сборки Cordova на андроид. Он создает папку Android под Платформы

  3. Откройте Android Studio и откройте папку Android, представленную в нашем проекте Проект платформа-андроид. Оставьте его на несколько минут, чтобы он построил грейдер

  4. После того, как gradle build закончен, мы получаем некоторые ошибки для включения minSdVersion в manifest.xml. Теперь мы просто удалим <uses-sdk android:minSdkVersion="19" /> из manifest.xml.

    Убедитесь, что он удален из обоих мест:

    1. app & rarr; манифесты & rarr; AndroidManifest.xml.
    2. CordovaLib & rarr; манифесты & rarr; AndroidManifest.xml.

    Теперь попробуйте снова построить градл, и теперь он успешно собирается

  5. Убедитесь, что у вас есть следующее в теге приложения в приложении & rarr; манифест & rarr; Androidmanifest.xml

    <application
    android:networkSecurityConfig="@xml/network_security_config"  android:usesCleartextTraffic="true" >
    
  6. Открыть network_security_config (app & rarr; res & rarr; xml & rarr; 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>
    

Здесь xxx.yyyy.com является ссылкой вашего HTTP API. Убедитесь, что вы не включили Http перед URL.

Примечание. Теперь создайте приложение с помощью Android Studio (Build - Build Bundle's / APK - Build APK), и теперь вы можете использовать это приложение, и оно прекрасно работает в Android Pie. Если вы пытаетесь создать приложение, используя ionic Cordova build android, оно переопределяет все эти настройки, поэтому убедитесь, что вы используете Android Studio для сборки проекта.

Если у вас установлены какие-либо более старые версии приложения, удалите их и попробуйте, иначе у вас останется какая-то ошибка:

Приложение не установлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...