返回

Flutter Android WebView打开网页错误:ERR_CLEARTEXT_NOT_PERMITTED、net:ERR_CACHE_MISS,高效解决!

Android

** устранение ошибок "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", выполните следующие шаги:

  1. Убедитесь, что веб-страница, которую вы пытаетесь открыть, использует соединение HTTPS.
  2. Добавьте в файл AndroidManifest.xml следующий код:
    <application
      android:usesCleartextTraffic="true"
      ...
    </application>
  1. Перезапустите приложение.

** Способы устранения ошибки "net:ERR_CACHE_MISS" **

Чтобы устранить ошибку "net:ERR_CACHE_MISS", выполните следующие шаги:

  1. Убедитесь, что ваше сетевое соединение стабильно.
  2. Попробуйте перезагрузить веб-страницу.
  3. Очистите кэш браузера.
  4. Попробуйте использовать другой браузер.

** Часто задаваемые вопросы **

** Зачем нужно добавлять 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);