web-dev-qa-db-fra.com

Erreur réseau avec axios et réaction native

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);
        });
    }
2
smilebomb

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.

1
smilebomb