Política de Transporte de Seguridad en IOS 9 | NSAppTransportSecurity

NSAppTransportSecurity

A partir de la versión 9 del sistema operativo IOS se implemento de fabrica la Política de Transporte de Seguridad que evita que una aplicación pueda hacer una petición http a una url insegura (permitiendo únicamente peticiones vía https).

Dicho comportamiento podremos observarlo con el siguiente error:

Connection failed: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSUnderlyingError=0x7fada0f31880 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}, NSErrorFailingURLStringKey=MyServiceURL, NSErrorFailingURLKey=MyServiceURL, NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.}

Para evitar la política de transporte de seguridad existen dos métodos a través del archivo de configuración info.plist de tu aplicación:

Método 1: Permitir acceso a cualquier url no segura (NSAllowsArbitraryLoads)

  • Abrir tu archivo info.plist
  • Crear un row del tipo dictionary con el nombre NSAppTransportSecurity
  • Dar click a la entrada NSAppTransportSecurity y crear un row de tipo Boolean con el nombre NSAllowsArbitraryLoads y el valor YES

Debería quedar así:

NSAllowsArbitraryLoads

Método 2: Permitir acceso a un dominio específico (NSExceptionDomains)

  • Abrir tu archivo info.plist
  • Crear un row del tipo dictionary con el nombre NSAppTransportSecurity
  • Dar click a la entrada NSAppTransportSecurity y crear un row de tipo dictionary con el nombre NSExceptionDomains
  • Dar click a la entrada NSExceptionDomains y crear un row de tipo dictionary con el nombre del dominio que vas a utilizar (ejemplo tudominio.com)
  • Dar click a la entrada tudominio.com y crear un row de tipo Boolean con el nombre NSExceptionAllowsInsecureHTTPLoads y el valor YES
  • Dar click nuevamente a la entrada tudominio.com y crear otro row de tipo Boolean con el nombre NSIncludesSubdomains y el valor YES

Debería quedar así:

NSExceptionDomains

Después de esto podrás conectarte de manera satisfactoria a la url que deseabas acceder.

Comments

comments

Leave a Reply

%d bloggers like this: