web-dev-qa-db-fra.com

NSAllowsArbitraryLoads ne fonctionne pas

J'ai eu une application qui télécharge des informations d'un domaine http. Mais après la mise à jour de Swift 2.0 et de Xcode 7, mon application ne peut plus se connecter au serveur et télécharger les données json. Je reçois le message "App Transport Security a bloqué une charge de ressources HTTP en clair (http: //) car elle n’est pas sécurisée. Des exceptions temporaires peuvent être configurées via le fichier Info.plist de votre application. " Erreur.

J'ai essayé de mettre ces lignes dans mon info.plist:

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

Mais je reçois la même erreur, ça ne marche pas. Je reçois toujours des données nulles à partir des méthodes de téléchargement. Quelqu'un a cette même erreur? Merci!

EDIT: Voici une image de mon fichier info.plist:

 Info.plist file

12
Pablo Quemé

Je me sens si bête. J'ai ajouté les clés pour désactiver l'ATS sur le mauvais Info.plist. Au lieu de l'ajouter au fichier de fichiers de support/Info.plist, je l'ai ajouté au fichier MyAppTests/Supporting Files/Info.plist. Pas vraiment un bug dans Xcode, mais un bug dans mon cerveau. Merci à tous pour vos réponses!

14
Pablo Quemé

Vous pouvez essayer d'utiliser

nscurl --ats-diagnostics <your-URL>

dans le terminal. Cela peut vous aider à trouver les paramètres permettant à votre application de se connecter à votre URL. Cela ne fonctionne que sur OSX El Capitan. Découvrez la pomme technote .

Mais si vous avez essayé NSArbitraryLoads dans votre fichier info.plist, cet outil de diagnostic ne vous aidera probablement pas. Je pense que vous avez peut-être trouvé un bug.

8
simple_code

Dans mon cas, je devais supprimer toutes les autres clés telles que "Autoriser les charges arbitraires dans le contenu Web" ou "Domaines d'exception" afin que "Autoriser la charge arbitraire" fonctionne comme il est défini sur true sous "Paramètres de sécurité du transport d'applications" dans Informations. .plist.

Testé avec XCode 8.2.1, iOS 10.2.

3
Darius Miliauskas

J'ai eu le même problème, j'ai essayé d'ajouter NSExceptionMinimumTLSVersion et cela fonctionne.

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSExceptionMinimumTLSVersion</key>
   <string>TLSv1.0</string>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Je ne sais pas pourquoi cela aide, mais ... ça marche! J'espère que c'est utile pour quelqu'un aussi

3
droideca

Si vous devez charger une ressource http:// uniquement sur le Web (UIWebView/WKWebView/SafariViewController), les éléments suivants devraient suffire.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>
2
Vijay Tholpadi

Aucune des solutions précédentes ne fonctionnait pour moi. NSAllowsArbitraryLoads était défini sur true, mais HTP ne fonctionnera toujours pas. Après avoir vérifié, le fichier info.plist comporte une section NSExceptionDomains. Je l'ai donc supprimé pour les tests et tout a fonctionné.

Il semble donc qu'annuler NSExceptionDomains annule NSAllowsArbitraryLoads, espérons que cela sera utile.

1

Avez-vous essayé d'ajouter votre domaine tel que? Vous devriez l'ajouter au dictionnaire NSAppTransportSecurity.

<key>NSExceptionDomains</key>
        <dict>
            <key>abcde.com</key>
            <dict>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
0
ridvankucuk

J'ai eu un problème similaire et après un moment, j'ai découvert que le fichier info.plist était corrompu. Je ne peux que conseiller de vérifier directement le code XML, pas seulement l'éditeur de plist dans xcode.

0
Gerrit Horeis

J'ai eu le même problème dans XCode Version 8.3.2 (8E2002) avec iOS 10.3. Après avoir supprimé toutes les clés telles que "Autoriser les charges arbitraires dans le contenu Web" ou "Domaines d'exception", la touche "Autoriser le chargement arbitraire" fonctionne comme prévu. Merci @ Dariukas.

0
David Liu

Sous iOS12, je ne pouvais pas le faire fonctionner à l'ancienne NSAllowsArbitraryLoads

Ce n'est que lorsque j'ai mis à jour la clé à NSExceptionAllowsInsecureHTTPLoads que cela fonctionnait. Ma section info.plist qui fonctionne:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>yourdomain.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>
0
Nikolay Apostolov