He estado tratando de resolver esto durante horas. Actualmente estoy tratando de aprender el desarrollo de React Native con un backend Node/Express. Parece que no puedo hacer una solicitud de obtención de Axios a mi API local desde mi aplicación Expo que se ejecuta en mi dispositivo IOS (dispositivo real).
he intentado agregar
"infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true, "NSAllowsLocalNetworking": true, "NSExceptionDomains": { "192.168.1.4": { "NSExceptionAllowsInsecureHTTPLoads": true, "NSRequiresCertificateTransparency": false } } } }a mi aplicación.json.
También he probado lo siguiente:
usando tanto localhost como la dirección ipv4 de mis backends como URL de solicitudes
crear una clave SSL autofirmada para el servidor, enviar el certificado al iPhone y confiar en él.
prácticamente todo lo que puede encontrar en los foros de desarrollo de StackOverflow e IOS.
Aquí está la solicitud de axios que se realiza desde React-Native:
const onLoginPress = () => { console.log("login pressed"); axios .post('https://192.168.1.4:5000/api/auth/login', {email, password}) .then(function (response) { //handle success console.log(response); if (response.data.success) alert(`successful login, token: ${response.data.token}`); }) .catch(function (error) { //handle error alert('login was not successful') console.log(error); }) };Este es el error que obtengo al ejecutar GET desde el iPhone que ejecuta la aplicación en Expo GO:
Network Error at node_modules\axios\lib\core\createError.js:16:14 in createError at node_modules\axios\lib\adapters\xhr.js:117:24 in handleError at node_modules\event-target-shim\dist\event-target-shim.js:818:20 in EventTarget.prototype.dispatchEvent at node_modules\react-native\Libraries\Network\XMLHttpRequest.js:609:10 in setReadyState at node_modules\react-native\Libraries\Network\XMLHttpRequest.js:396:6 in __didCompleteResponse at node_modules\react-native\Libraries\vendor\emitter\_EventEmitter.js:135:10 in EventEmitter#emit at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:414:4 in __callFunction at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:113:6 in __guard$argument_0 at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:365:10 in __guard at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:112:4 in callFunctionReturnFlushedQueueActualmente, la solicitud GET funciona cuando se ejecuta la aplicación Expo en un navegador web y en Postman, si confío en el certificado autofirmado, por supuesto, o deshabilito la verificación SSL.
El dispositivo IOS donde persiste el problema es un iPhone 11 Pro Max con IOS 14.8.1
intente usar ngrok, descárguelo y extráigalo en la misma carpeta y use este comando ngrok http://localhost:your_api_port obtendrá una URL de ngrok a la que puede enviar solicitudes desde su aplicación nativa de reacción