ios uiwebview ios9 wkwebview app-transport-security

iOS 9... ¿Están las vistas WebView exentas de las reglas de excepciones de seguridad de transporte(ATS) de la aplicación que bloquean los hosts HTTP inseguros?



uiwebview ios9 (4)

En iOS 9, Apple está bloqueando las conexiones HTTP inseguras para las aplicaciones, a menos que los hosts específicos estén en la lista blanca.

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

¿Están las Vistas WebView exentas de estas reglas por razones obvias, o aún se espera que incluyamos en la lista blanca de hosts que abre un navegador ... incluidos todos los enlaces de una página determinada?

No estaba seguro de si esto era nuestra responsabilidad o si estaba exento.


Esta pregunta fue originalmente acerca de iOS 9; Sin embargo, según la documentation de Apple:

A partir de iOS 10.0 y versiones posteriores, se admiten las siguientes subclaves:

  • NSAllowsArbitraryLoadsInWebContent
  • ...

Use NSAllowsArbitraryLoadsInWebContent para no tener que hacer una lista blanca de cada página que puede cargar un WebView.

Mantenga NSAllowsArbitraryLoads para mantener la compatibilidad con versiones anteriores con iOS 9 y habilitar la nueva configuración en su proyecto de Xcode 8 Info.plist aquí:


He insertado lo siguiente en mi lista de aplicaciones según la Guía de Apple:

<key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections - with and without SSL (DANGEROUS)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

y cuando intento cargar mi webView (desde un servidor HTTPS no menos), aparece el siguiente error y no se carga.

NSURLSession / NSURLConnection La carga de HTTP falló (kCFStreamErrorDomainSSL, -9813)

Por lo tanto, parece que no solo no están exentos, sino que no funcionan, incluso si realiza la adición correcta al .plist.


Si su aplicación (por ejemplo, un navegador web de terceros) necesita cargar contenido arbitrario, Apple proporciona una forma de desactivar el ATS por completo, pero sospecho que es prudente que use esta capacidad con moderación:

<key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections (DANGER)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict>


SFSafariViewController puede mostrar HTTP sin la clave NSAppTransportSecurity.

UIWebView y WKWebView requieren la clave NSAppTransportSecurity mencionada anteriormente para mostrar las páginas HTTP.