Tengo una función useEffect que llama a una API por axios con alguna autenticación de portador. Aquí está mi código
const user = useContext(UserContext ) const taskGetFunc = async () => { try { const { data } = await axios({ method: 'GET', url: 'http://demo.shikkhaapp.com/api/homework-list/1', headers: {'Authorization': user.token} }) console.log(data) } catch (error) { console.log(user.token) console.log(error) } } useEffect(() => { taskGetFunc() }, [])ahora esto me devuelve este error
Request failed with status code 401 at node_modules/axios/lib/core/createError.js:15:17 in createError at node_modules/axios/lib/core/settle.js:16:9 in settle at node_modules/axios/lib/adapters/xhr.js:57:6 in onloadend at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:614:6 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 Sé que esto es un error con respecto a la autenticación, pero probé el user.token de usuario en el cartero y en reqbin. funciona perfectamente allí pero no en mi aplicación de reacción. Intenté hacerlo en fetch, de diferentes maneras en axios, pero me muestra el mismo error.
¿Podría por favor ayudarme con alguna idea, lo que podría causar el error.
El token de usuario es una cadena con token de portador.
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiMGNmNTFiMzQ5ZDliZTVjYjVjODVhOTUzOTk0ZGUzMTY2MDA3Nzk4Njk3MjNkOWRlYTAyOWRjZTgzY2U3N2E3OTJjOTA3Y2RhMmQyMDMzMTQiLCJpYXQiOjE2NDU5MDYxNDguNjkwNTEyODk1NTg0MTA2NDQ1MzEyNSwibmJmIjoxNjQ1OTA2MTQ4LjY5MDUxNTA0MTM1MTMxODM1OTM3NSwiZXhwIjoxNjc3NDQyMTQ4LjY4OTI5NzkxNDUwNTAwNDg4MjgxMjUsInN1YiI6IjQyIiwic2NvcGVzIjpbXX0.LfbwfLwO-PAAxhLcNLMXXelefcK6fmtKvFk55V2tRjWzP-XDqTUdkLO105ybkc1vU1QfX0gxdrCj4OSExItS82ySG5-mD4JmrGk4ckN0Ffs581anL2l3zYuH_ExulG564-Jkbzkqsfbu4nR8ysmlbvBZZmn0B2elIlZWnZRp-5XkDJkUTpvJKrl4CPoc4mldX_5VnoYaoob4ctHkNNVw4FBdnXRXX-OzzpmeW6D9aey1KZcHcwg6OE0aiA5wmp1YwC3Ou2lVE6XbUOl1e0VAFKOCJcCF3i29k89JEnFVuKW-X9tcajFbjRf1UohdpkY-uoIini1256ky-BN3C_98Gqq3w-CORLhbdfQIqET9kzilnKE7pJ97oXHUGzIJSu--IPMfljI9wHfFugXqsBzwa0fD8I1zg9uYW_oNtA264sVdgqVbntp23Q6KG9tecJCBPl7QToVsxaLx9hWjWuos39bt3nyp4Zj4iu4m3X4tGQpTZ-ZOsiY0UD1lGC5CclDTO1LYM2mKX6qGULBlhStQqrzsd9IRC-Qsxxt-MBDN5OQVvKsefdp--c38QUQNHkrwYY6JyWv1umiXcYs0ejwmGUwOIP9657xwm_thHeFIppoeiGZYLO1dJaibSeuA1XLO_Jh7WZ6hg0aTaglIsxBfFf5pguMVNbZ60mQe5NIvclwAquí está el encabezado del lado del servidor, este es un código php porque el servidor está hecho con laravel
curl_setopt_array($curl, array( CURLOPT_URL => 'http://demo.shikkhaapp.com/api/homework-list/1', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer '.$bearerToken ), ));Intente eliminar el token de portador en laravel o en user.token porque su token actual se parece a este Bearer Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9
su token debe contener solo la clave del portador
Su solicitud de Javascript no define la autorización como token de portador, debe definir el encabezado como:
headers: {'Authorization': `Bearer ${user.token}`}Si solicita trabajar con Postman, puede pedirle a Postman que genere un código de cliente y compararlo con su solicitud de red escrita en React con axios.
Lo siento chicos, fue solo un error de CORS que el desarrollador de back-end no estuvo de acuerdo al principio.