iOS9 no carga resources inseguros desde una página segura (SSL / HTTPS)

Estoy intentando cargar una página en UIWebView en iOS9 usando https: // URL. La página cargada incluye CSS e imágenes de un server inseguro.

Por ejemplo, la página cargada: https : //www.example.com/, que incluye la hoja de estilo http : //www.example.com/style.css e image http : //www.example.com/image.jpg

Todo funciona si la página original se carga a través de una connection insegura (http regular). Todo funciona también en iOS8, tanto a través de HTTPS y HTTP.

Configuré NSAppTransportSecurity en NSAllowsArbitraryLoads en el file PLIST de la aplicación:

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

Sin embargo, cuando se carga la página a través de HTTPS, las imágenes se cargan correctamente, pero los files CSS no. Parece que los bloques UIWebView cargan resources inseguros desde una página segura.

¿Hay alguna configuration de UIWebView que permita cargar CSS a través de una connection insegura?

Esto no está relacionado con ATS. WebKit impone una política de contenido mixto que impide el acceso a ciertas classs de contenido "activo" (JS, CSS, etc.) que no se carguen a través de una connection insegura cuando la página del server se sirve a través de https.

Si examina su página en el Inspector, verá que esto se informa en el panel de errores.


Seguimiento: no puede desactivar el locking de contenido mixto. Permitir CSS o JS inseguros networkinguce la security de toda la página a la del recurso less seguro. La solución si debe cargar css / js sobre http es cargar toda la página sobre http. De esta forma, la interfaz de usuario que ve el usuario refleja correctamente la security del contenido.

En su info.plist debe agregar las siguientes keys de security de transporte de aplicaciones:

 NSAppTransportSecurity Dictionary NSAllowsArbitraryLoads Boolean YES NSExceptionDomains Dictionary **YOUR-DOMAIN-HERE** Dictionary NSExceptionAllowsInsecureHTTPLoads Boolean YES NSIncludesSubdomains Boolean YES NSThirdPartyExceptionAllowsInsecureHTTPLoads Boolean YES 

Espero que esto funcione para ti.

App Transport Security revisado en versión iOS9. Ahora, su aplicación está a salvo de una connection segura. Y iOS obliga a hacer una connection segura. Esto puede ser un conflicto en su caso.

De la documentation de Apple

Si su aplicación necesita hacer una request a un dominio inseguro, debe especificar este dominio en el file Info.plist de su aplicación

Entonces, creo que esto puede .css problemas al cargar el file .css para páginas web.

Por lo tanto, testing a especificar tu dominio en info.plist y comtesting que los files info.plist estén cargados o no.

Editar:


Spotlight: necesita agregar más keys aquí en info.plist .

Mire esta key NSThirdPartyExceptionAllowsInsecureHTTPLoads esto permite un dominio de service que no está controlado por el desarrollador y agrega una exception a la capa de Transporte para pasar resources inseguros.

A continuación, se detalla la estructura para agregar keys para la security de transporte de aplicaciones :

introduzca la descripción de la imagen aquí

Para get más detalles y explicaciones sobre todas las keys, consulte esta nota: Technote de security de transporte de aplicaciones

En Xcode 8.3.3 (8E3004b)

Ha cambiado a

App Transport Security Settings > Allow Arbitrary Loads in Web Content > YES

introduzca la descripción de la imagen aquí