Seguridad de transporte de aplicaciones bloquea el routing a través de un esquema personalizado de url

Mi aplicación para iOS (escrita en Swift y React Native) tiene un esquema de url personalizado que me permite enrutar a la aplicación desde, por ejemplo, Safari como este myappscheme: // https: //www.mywebsite.com/somematerial . Si habilito Seguridad de transporte de aplicaciones en mi aplicación, el routing a través de un esquema de url personalizado está bloqueado y recibo este post:

App Transport Security ha bloqueado una carga de resources HTTP (http: //) de text sin formatting ya que es insegura. Las excepciones temporales se pueden configurar a través del file Info.plist de su aplicación.

Sin embargo, si desactivo ATS, la aplicación se enruta según lo esperado. No estoy accediendo a ningún enlace a través de http en mi aplicación y en mi ruta siempre obtengo datos a través de https. Por lo tanto, no sé por qué ATS está bloqueando esta ruta. ¿Sabes si debo proporcionar alguna información adicional sobre mi esquema de URL?

Consulte mis configuraciones ATS en Info.plist:

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> <key>NSExceptionDomains</key> <dict> <key>localhost</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> 

También he incluido en la list blanca mi esquema de url personalizado:

 <key>LSApplicationQueriesSchemes</key> <array> <string>myappscheme</string> </array> 

Este asunto ha sido resuelto. Logré cerrar el punto final al que estaba presionando y comprobé si satisfizo los requisitos ATS al hacerlo en Terminal:

 nscurl --ats-diagnostics https://www.example.com/ 

Resultó que el subdominio particular que intentaba get fallaba todos los requisitos de ATS. El equipo de mi server solucionó el problema y aseguró el punto final.

Creo que el problema es con React Native, mencionaste que utilizas Safari como fuente de enlaces personalizados y probablemente significa que estás intentando depurar tu aplicación y routing personalizado en Simulator, así que quizás tu problema esté relacionado con React Native. Si tiene el mismo comportamiento en un dispositivo real cuando React Native funciona sin connection, actualice su pregunta.

Deshabilite temporalmente la Seguridad de transporte de aplicaciones (ATS) agregando la input NSAllowsArbitraryLoads a su file Info.plist . Dado que ATS no permite requestes HTTP inseguras a direcciones IP, debe deshabilitarlo por completo para ejecutarse en un dispositivo. Esto es solo un requisito para el desarrollo en un dispositivo y, a less que no pueda solucionar un problema, debe dejar ATS habilitado para las comstackciones de producción. Para get más información, consulte esta publicación sobre la configuration de ATS.

Reactivar la documentation nativa: ejecutándose en el dispositivo

Configurar la configuration info.plist .

Puede agregar un dominio específico como:

 <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>www.google.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict>