Saltar al contenido principal

Las conexiones HTTP inseguras están desactivadas por defecto en iOS y Android

Acceder a una URL con protocolo HTTP lanza una excepción a menos que el dominio esté explícitamente permitido por la política.

Resumen

#

Si tu código intenta abrir una conexión HTTP a un host en iOS o Android, ahora se lanzará una StateException con el siguiente mensaje:

Insecure HTTP is not allowed by platform: <host>

Usa HTTPS en su lugar.

Contexto

#

A partir de la API 28 de Android y iOS 9, estas plataformas desactivan las conexiones HTTP inseguras por defecto.

Con este cambio, Flutter también desactiva las conexiones inseguras en plataformas móviles. Las demás plataformas (escritorio, web, etc.) no se ven afectadas.

Puedes anular este comportamiento siguiendo las directrices específicas de cada plataforma para definir una política de red específica del dominio. Consulta la guía de migración a continuación para más detalles.

Guía de migración

#

En iOS, puedes añadir NSExceptionDomains al Info.plist de tu aplicación.

En Android, puedes añadir un XML de configuración de seguridad de red.

Permitir conexiones en texto plano para builds de debug

#

Si deseas permitir conexiones HTTP para builds de debug de Android, puedes añadir el siguiente fragmento a tu $project_path\android\app\src\debug\AndroidManifest.xml:

xml
<application android:networkSecurityConfig="@xml/network_security_config">
  ...
</application>

Luego, añade la configuración de red a tu $project_path/android/app/src/debug/res/xml/network_security_config.xml:

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

También es posible establecer la política por dominio. Consulta la documentación de Android para obtener más información.

Para iOS, puedes seguir estas instrucciones para crear un Info-debug.plist y colocar esto en él:

xml
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

No recomendamos que hagas esto para tus builds de versión final (release).

Información adicional

#
  • La configuración en tiempo de compilación (build) es la única forma de cambiar la política de red. No se puede modificar en tiempo de ejecución.

Timeline

#

Introducido en la versión: 1.23
En la versión estable: 2.0.0
Revertido en la versión: 2.2.0 (propuesto)

Referencias

#

Documentación de la API: No hay ninguna API para este cambio ya que la modificación de la política de red se realiza a través de la configuración específica de la plataforma como se detalla arriba.

PRs relevantes: