web-dev-qa-db-fra.com

iOS 9 ... WebView (s) est-il exempté des règles ATS (App Transport Security Exceptions) qui bloquent les hôtes HTTP non sécurisés?

Dans iOS 9, Apple bloque les connexions HTTP non sécurisées pour les applications, sauf si des hôtes spécifiques sont sur liste blanche.

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

Les WebView (s) sont-elles exemptées de ces règles pour des raisons évidentes, ou devons-nous toujours mettre sur liste blanche les hôtes qu'un navigateur ouvre ... y compris tous les liens d'une page donnée?

Je ne savais pas si c'était notre responsabilité ou si c'était exonéré.

21
Ben Guild

SFSafariViewController peut afficher HTTP sans la clé NSAppTransportSecurity.

IWebView et WKWebView nécessitent la clé NSAppTransportSecurity mentionnée ci-dessus pour afficher les pages HTTP.

27
cannyboy

J'ai inséré ce qui suit dans mes applications .plist selon le Apple Guidance:

<key>NSAppTransportSecurity</key>
<dict>
     <!--Include to allow all connections - with and without SSL (DANGEROUS)-->
     <key>NSAllowsArbitraryLoads</key>
     <true/>
</dict>

et lorsque j'essaie de charger ma webView (à partir d'un serveur HTTPS pas moins), j'obtiens l'erreur suivante et elle ne se charge pas.

Échec du chargement HTTP de NSURLSession/NSURLConnection (kCFStreamErrorDomainSSL, -9813)

Donc, il semble que non seulement ils ne sont pas exemptés, ils ne fonctionnent pas même si vous faites l'ajout correct à la liste.

11
Scooter

Cette question concernait à l'origine iOS 9; cependant, selon Apple documentation :

À partir d'iOS 10.0 et versions ultérieures, les sous-clés suivantes sont prises en charge:

  • NSAllowsArbitraryLoadsInWebContent
  • ...

Utilisez NSAllowsArbitraryLoadsInWebContent afin que vous n'ayez pas besoin de mettre en liste blanche chaque page qu'une WebView peut charger.

Gardez NSAllowsArbitraryLoads pour maintenir la compatibilité descendante avec iOS 9 et activez le nouveau paramètre dans votre projet Info.plist Xcode 8 ici: Enable ATS in project

8
Chris Woolfe

Si votre application (un navigateur Web tiers, par exemple) doit charger du contenu arbitraire, Apple fournit un moyen de désactiver complètement ATS, mais je pense qu'il est sage que vous utilisiez cette capacité avec parcimonie :

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