samsung reconoce puedo otro original con como cargar cargador carga apagado ios url nsurl ios9 app-transport-security

reconoce - ¿Cómo cargo una URL HTTP con App Transport Security habilitada en iOS 9?



mi iphone no reconoce el cargador (8)

Esta pregunta ya tiene una respuesta aquí:

Entonces, el nuevo SDK beta de iOS lanzado anoche tiene "App Transport Security" que alienta a los desarrolladores a usar https en lugar de http. En principio, esta es una gran idea, y ya uso https en nuestros entornos de puesta en escena / producción. Sin embargo, no tengo https configurado en mi entorno de desarrollo local, cuando la aplicación iOS se conecta a un servicio web que estoy ejecutando en mi computadora portátil.

Después de jugar un poco esta mañana, parece que el sistema de carga de URL, incluso si le entrega una URL http, decidirá usar https en su lugar. ¿Alguien sabe cómo deshabilitar este comportamiento, incluso solo para URL particulares?


Como respuesta aceptada ha proporcionado la información requerida, y para obtener más información sobre el uso y la desactivación de App Transport Security, puede encontrar más información al respecto .

Para las excepciones por dominio, agréguelas a Info.plist :

<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>yourserver.com</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict>

Pero, ¿qué sucede si no conozco todos los dominios inseguros que necesito usar? Use la siguiente tecla en su lista de información.

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

Para más detalles puede obtener desde este enlace.


Compilación de respuestas dadas por @adurdin y @User

Agregue lo siguiente a su info.plist y cambie localhost.com con su nombre de dominio correspondiente, también puede agregar varios dominios:

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>localhost.com</key> <dict> <key>NSIncludesSubdomains</key> <false/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <false/> <key>NSExceptionRequiresForwardSecrecy</key> <true/> <key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.2</string> <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <false/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <true/> <key>NSThirdPartyExceptionMinimumTLSVersion</key> <string>TLSv1.2</string> <key>NSRequiresCertificateTransparency</key> <false/> </dict> </dict> </dict> </plist>

Tu info.plist debe tener este aspecto:


Consulte la referencia de Info.plist de Apple para obtener todos los detalles (gracias @ gnasher729).

Puede agregar excepciones para dominios específicos en su Info.plist:

<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>testdomain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <true/> <key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.2</string> <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <false/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <true/> <key>NSThirdPartyExceptionMinimumTLSVersion</key> <string>TLSv1.2</string> <key>NSRequiresCertificateTransparency</key> <false/> </dict> </dict> </dict>

Todas las claves para cada dominio exceptuado son opcionales. El orador no dio detalles sobre ninguna de las teclas, pero creo que todas son razonablemente obvias.

(Fuente: WWDC 2015, sesión 703, "Privacidad y su aplicación" , 30:18)

También puede ignorar todas las restricciones de seguridad de transporte de aplicaciones con una sola clave, si su aplicación tiene una buena razón para hacerlo:

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

Si su aplicación no tiene una buena razón, puede correr el riesgo de rechazo:

Establecer NSAllowsArbitraryLoads en verdadero permitirá que funcione, pero Apple fue muy claro en que tienen la intención de rechazar las aplicaciones que usan esta bandera sin una razón específica. La razón principal para usar NSAllowsArbitraryLoads que se me ocurre sería el contenido creado por el usuario (intercambio de enlaces, navegador web personalizado, etc.). Y en este caso, Apple aún espera que incluya excepciones que impongan el ATS para las URL que tiene bajo control.

Si necesita acceso a URL específicas que no se sirven a través de TLS 1.2, debe escribir excepciones específicas para esos dominios, no usar NSAllowsArbitraryLoads configurado en yes. Puede encontrar más información en la sesión NSURLSesssion WWDC.

Tenga cuidado al compartir la solución NSAllowsArbitraryLoads. No es la solución recomendada por Apple.

- kcharwood (gracias @ marco-tolman)


Esto es lo que funcionó para mí:

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSExceptionDomains</key> <dict> <key><!-- your_remote_server.com / localhost --></key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <true/> </dict> <!-- add more domain here --> </dict> </dict>

Solo quiero agregar esto para ayudar a otros y ahorrar algo de tiempo:

si está utilizando: CFStreamCreatePairWithSocketToHost . asegúrese de que su host sea ​​el mismo que tiene en su .plist o si tiene un dominio separado para el socket, simplemente agréguelo allí.

CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)/*from .plist*/, (unsigned int)port, &readStream, &writeStream);

Espero que esto sea útil. Aclamaciones. :)


He resuelto como archivo plist.

  1. Agregue un NSAppTransportSecurity: Diccionario.
  2. Agregue la subclave denominada "NSAllowsArbitraryLoads" como booleana: SÍ


Las configuraciones anteriores no funcionaron para mí. Probé muchas combinaciones de teclas, esta funciona bien:

<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>mydomain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict>


Seguido this .

Lo resolví agregando algunas claves en info.plist. Los pasos que seguí son:

  1. info.plist mi archivo info.plist proyectos

  2. Se agregó una clave llamada NSAppTransportSecurity como Dictionary .

  3. Se agregó una subclave llamada NSAllowsArbitraryLoads como Boolean y estableció su valor en YES como en la siguiente imagen.

Limpia el proyecto y ahora todo funciona bien como antes.

Link referencia.


Si solo desea deshabilitar la Política de transporte de aplicaciones para servidores de desarrollo locales, las siguientes soluciones funcionan bien. Es útil cuando no puede, o no es práctico, configurar HTTPS (por ejemplo, cuando usa el servidor de desarrollo de Google App Engine).

Sin embargo, como han dicho otros, ATP definitivamente no debe desactivarse para aplicaciones de producción.

1) Use una lista diferente para la depuración

Copie su archivo Plist y NSAllowsArbitraryLoads. Use esta lista para la depuración.

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

2) Excluir servidores locales

Alternativamente, puede usar un único archivo plist y excluir servidores específicos. Sin embargo, no parece que pueda excluir las direcciones IP 4, por lo que es posible que deba usar el nombre del servidor (que se encuentra en Preferencias del sistema -> Compartir o configurado en su DNS local).

<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>server.local</key> <dict/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict>