Flutter Android WebView打开网页错误:ERR_CLEARTEXT_NOT_PERMITTED、net:ERR_CACHE_MISS,高效解决!
2023-06-13 02:43:47
** устранение ошибок "ERR_CLEARTEXT_NOT_PERMITTED" и "net:ERR_CACHE_MISS" **
При работе с веб-страницами в приложении Flutter вы можете столкнуться с двумя распространенными ошибками: "ERR_CLEARTEXT_NOT_PERMITTED" и "net:ERR_CACHE_MISS". Давайте разберемся в причинах этих ошибок и способах их устранения.
** Ошибка "ERR_CLEARTEXT_NOT_PERMITTED" **
Эта ошибка возникает, когда вы пытаетесь открыть веб-страницу через незащищенное соединение HTTP вместо безопасного HTTPS. По умолчанию Android 9 и выше запрещают приложениям устанавливать сетевое соединение через незащищенные соединения HTTP.
** Ошибка "net:ERR_CACHE_MISS" **
Эта ошибка возникает, когда вы пытаетесь открыть веб-страницу, но ее кэшированная версия недоступна. Это может быть вызвано несколькими причинами: вы раньше не посещали эту страницу, кеш переполнен или ваше сетевое соединение нестабильно.
** Способы устранения ошибки "ERR_CLEARTEXT_NOT_PERMITTED" **
Чтобы устранить ошибку "ERR_CLEARTEXT_NOT_PERMITTED", выполните следующие шаги:
- Убедитесь, что веб-страница, которую вы пытаетесь открыть, использует соединение HTTPS.
- Добавьте в файл AndroidManifest.xml следующий код:
<application
android:usesCleartextTraffic="true"
...
</application>
- Перезапустите приложение.
** Способы устранения ошибки "net:ERR_CACHE_MISS" **
Чтобы устранить ошибку "net:ERR_CACHE_MISS", выполните следующие шаги:
- Убедитесь, что ваше сетевое соединение стабильно.
- Попробуйте перезагрузить веб-страницу.
- Очистите кэш браузера.
- Попробуйте использовать другой браузер.
** Часто задаваемые вопросы **
** Зачем нужно добавлять android:usesCleartextTraffic="true"
в AndroidManifest.xml? **
Это необходимо, чтобы приложение могло устанавливать сетевое соединение через незащищенные соединения HTTP.
** Я добавил android:usesCleartextTraffic="true"
, но ошибка "ERR_CLEARTEXT_NOT_PERMITTED" не исчезла. Что делать? **
Если вы добавили android:usesCleartextTraffic="true"
, но ошибка "ERR_CLEARTEXT_NOT_PERMITTED" не исчезла, возможно, приложение пытается открыть веб-страницу, использующую протокол HTTP/2. HTTP/2 - это новый сетевой протокол, использующий зашифрованное соединение. Чтобы решить эту проблему, вам нужно включить поддержку HTTP/2 в приложении.
** Я очистил кэш браузера, но ошибка "net:ERR_CACHE_MISS" не исчезла. Что делать? **
Если вы очистили кэш браузера, но ошибка "net:ERR_CACHE_MISS" не исчезла, возможно, ваше сетевое соединение нестабильно. Убедитесь, что ваше сетевое соединение стабильно, и повторите попытку.
** Пример кода **
Вот пример кода, который демонстрирует, как можно включить поддержку HTTP/2 в приложении Flutter:
HttpClient client = HttpClient();
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
IOClient ioClient = IOClient(client);