J'ai créé un point de terminaison API à l'aide du framework Django python que j'héberge de manière externe. Je peux accéder à mon ordinateur d'extrémité à partir d'un navigateur (mydomain.com/endpoint/
) et vérifier qu'il n'y a pas d'erreur. Il en va de même lorsque j'exécute mon serveur Django de test localement sur ma machine de développement (localhost:8000/endpoint/
). Lorsque j'utilise mon hôte local en tant que point de terminaison, mes données json sont transmises sans problème. Lorsque j'utilise mon domaine de production, axios est rattrapé par une erreur de réseau et le contexte qu'il donne est peu explicite ... à partir de la console de débogage, je reçois ceci:
Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:87)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:554)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:387)
at XMLHttpRequest.js:493
at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
at MessageQueue.__callFunction (MessageQueue.js:353)
at MessageQueue.js:118
at MessageQueue.__guardSafe (MessageQueue.js:316)
Voici mon appel axios dans mon composant natif de réaction:
componentDidMount() {
axios.get('mydomain.com/get/').then(response => { // localhost:8000/get works
this.setState({foo:response.data});
}).catch(error => {
console.log(error);
});
}
Il semble que les requêtes réseau non chiffrées soient bloquées par défaut dans iOS, c.-à-d. https
fonctionnera, http
ne fonctionnera pas.
À partir de la documentation :
Par défaut, iOS bloquera toute demande non chiffrée à l'aide de SSL . Si vous devez extraire une URL en texte clair (une URL commençant par http) vous devrez d’abord ajouter une exception App Transport Security.