241 votes

Réagir fetch() Native réseau demande a échoué

Quand je crée un nouveau projet à l’aide de (RN version 0.29.1) et mettre une extraction dans la méthode render pour le film de démonstration publique de facebook API, il jette une . Il y a une trace de la pile très inutile et ne peux pas déboguer les requêtes du réseau dans la console de chrome. Voici l’extraction que j’envoie :

193voto

Alek Hurst Points 1828

Le problème ici est qu’iOS n’autorise pas les requêtes HTTP par défaut, uniquement HTTPS. Si vous souhaitez activer HTTP demandes ajouter ceci à votre `` :

80voto

Mahmoodvcs Points 956

J'ai été en utilisant localhost pour l'adresse, ce qui était évidemment faux. Après le remplaçant par l'adresse IP du serveur (dans le réseau que l'émulateur est), il a parfaitement fonctionné.

Modifier

Dans l'Émulateur Android, l'adresse de la machine de développement est - 10.0.2.2. Plus d'explications ici

Pour Genymotion, l'adresse est 10.0.3.2. Plus d'infos ici

67voto

Lavi Points 146

Non recommandé d'autoriser tous les domaines pour http. Faites une exception pour seulement les domaines nécessaires.

Source: Configuration des exceptions de sécurité App Transport dans iOS 9 et OSX 10.11

Ajoutez les éléments suivants au fichier info.plist de votre application:

 <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>
 

12voto

Ocean Liu Points 79

React Native Docs donne la réponse à cela.

Apple a bloqué le chargement implicite des ressources HTTP en texte clair. Nous devons donc ajouter ce qui suit le fichier Info.plist (ou son équivalent) suivant notre projet.

 <key>NSExceptionDomains</key>
<dict>
    <key>localhost</key>
    <dict>
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
    </dict>
</dict>
 

React Native Docs -> Intégration avec des applications existantes -> Sécurité du transport d'applications

11voto

Dmitry Maksakov Points 113

Le problème peut être dans la configuration du serveur.

7.0 Android a un bogue décrit ici. Solution proposée par Vicky Chijwani :

Configurer votre serveur pour utiliser le prime256v1 de la courbe elliptique. Par exemple, Nginx 1.10 pour cela réglage ssl_ecdh_curve prime256v1 ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X