Открытый текстовый HTTP-трафик на … не разрешается

#android #http #cleartext

Вопрос:

моя программа берет URL-адрес у пользователя, поэтому она может сделать запрос на любой веб-сайт в Интернете. Я пытаюсь сделать это возможным, я просмотрел все ответы об ошибках «Android HTTP Cleartext» и сделал это, но это все еще не позволяет мне подключить мой тестовый локальный PHP-сервер, чего мне здесь не хватает?

 <uses-permission android:name="android.permission.INTERNET" />
...
<application
...
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:ignore="UnusedAttribute"
 

Моя конфигурация безопасности:

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">api.example.com</domain>
    </domain-config>
</network-security-config>
 

Спасибо!

Комментарии:

1. Если ваш тестовый локальный PHP-сервер не является api.example.com или не является его поддоменом, ваша конфигурация сетевой безопасности будет проигнорирована.

2. @CommonsWare Но как я могу сделать это, чтобы подключить каждый веб-сайт без каких-либо ошибок? Теперь я могу измениться api.example.com до 192.168.1.21[:8000], но не для всех веб-сайтов в мире.

3. В этом случае вам следует удалить android:networkSecurityConfig=»@xml/network_security_config».

Ответ №1:

Попробуйте изменить свой network_security_config.xml следующим образом:

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true"></base-config>
</network-security-config>
 

Комментарии:

1. Обратите внимание, что по умолчанию для cleartextTrafficPermitted false приложений targetSdkVersion установлено значение 28 или выше . Таким образом, ваше предложение «или» вряд ли будет правильным для любого приложения, распространяемого в Play Store. Однако ваша <base-config> рекомендация должна сработать.

2. Спасибо @CommonsWare!, я отредактирую свой ответ