Est-il sûr, en termes de sécurité, d'ajouter localhost
à ATS NSExceptionDomains
pour le développement? Il n'est pas très pratique (et il est facile d'oublier) de supprimer ces lignes de Info.plist
fichier avant chaque commit.
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
De plus, peut Apple rejeter l'application à cause de cela?
Vous pouvez maintenant le faire pour les adresses locales:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
Apple a béni cette clé en tant qu'exception ATS - il a déclaré qu'il ne rejetterait pas les applications pour son utilisation. Plus d'informations ici: https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html (rechercher dans la page "local")
Si ce n'est pas nécessaire dans la version de production de l'application, je configurerais vos configurations de build pour utiliser deux fichiers Info.plist différents. Vous pouvez essentiellement avoir votre version interne du plist configurée comme "Internal-Info.plist" et avoir l'exclusion localehost en elle. Ensuite, ayez la production "Info.plist" qui n'a pas cette exclusion, ne donnant Apple aucune raison de rejeter éventuellement votre application maintenant ou à l'avenir.
Pour configurer vos builds afin d'extraire automatiquement le bon Info.plist pour le type de build:
Assurez-vous de copier le "Info.plist" dans un nouveau fichier appelé "Internal-Info.plist", supprimez l'exclusion du "Info.plist" et vous devriez être bon.
Apple pourrait vous rejeter maintenant pour cela (seulement Apple le saurait), mais à partir de 2017, Apple aura besoin d'une raison valable pour toute exclusion ATS, donc sauf si vous avez une justification valable pour exclure les exigences ATS localhost, il est préférable de le configurer correctement maintenant.