Indice dei contenuti
Come spesso accade nel variegato - e ben poco retro-compatibile - universo Apple, il rilascio di iOS 9 e XCode 7 ha portato la consueta serie di grattacapi a molti sviluppatori. Stavolta il problema principale è legato all'introduzione della nuova funzionalità denominata App Transport Security (ATS per gli amici), che a partire da iOS 9.0 e OSX 10.11 è abilitata di default su tutte le applicazioni compilate con XCode 7 o superiore.
Questa funzionalità, che secondo Apple ha il merito di "migliorare la privacy e l'integrità dei dati delle connessioni tra la app e i web services", di fatto impedisce qualsiasi connessione HTTP non basata su HTTPS (RFC 2818). Una gioia per lo sviluppatore medio, che non di rado utilizza web service casalinghi installati su web server proprietari o repository multimediali economici (GDrive, Amazon AWS et. al.) privi di certificato SSL.
Fortunatamente, nell'attesa di dotarvi del certificato di cui sopra, potete disabilitare la funzionalità ATS inserendo le seguenti linee XML nel vostro file Info.plist (tasto destro > Open As > Source Code):
Disabilitare ATS per un dominio specifico
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.yourserver.com</key> <dict> <!-- Includere questa chiave per abilitare anche i sotto-domini --> <key>NSIncludesSubdomains</key> <true/> <!-- Includere questa chiave per consentire le HTTP request --> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!-- Includere questa chiave per impostare la versione minima di TLS da accettare --> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict> |
Disabilitare ATS completamente
1 2 3 4 |
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> |