Estoy usando Axios para enviar solicitudes al servidor. Esta es la instancia que uso:
export default axios.create({ baseURL: "https://wagal.com", headers: { "Content-Type": "application/json; charset=utf-8", "Authorization": `Bearer ${store.getState().auth.userData.token}`, }, });y así es como uso la instancia anterior para habilitar y deshabilitar 2fa:
function switchTfa(data) { if (data) { return (dispatch) => { return api_request .post("/api/user/tfa/enable", {}) .then((response) => { dispatch(isLoading(false)); dispatch( userData({ tfa_enabled: data, user_token: store.getState().auth.userData.token, }) ); console.log("Success"); }) .catch((error) => { dispatch(isLoading(false)); console.log(`error.message`, error.message); }); }; } else { return (dispatch) => { dispatch(isLoading(true)); return api_request .post("/web-api/user/tfa/disable", {}) .then((response) => { dispatch(isLoading(false)); dispatch( userData({ tfa_enabled: data, user_token: store.getState().auth.userData.token, }) ); console.log("Success"); }) .catch((error) => { dispatch(isLoading(false)); console.log(`error.message`, error.message); }); }; } }Ahora, si envío esta solicitud, aparece el siguiente error:
Request failed with status code 400Si elimino "Autorización" en la instancia de Axios, funciona
export default axios.create({ baseURL: "https://wagal.com", headers: { "Content-Type": "application/json; charset=utf-8", Authorization: `Bearer ${store.getState().auth.userData.token}`, }, });Ahora, si vuelvo a cargar la aplicación y envío la solicitud, arroja este error 400, pero si envuelvo "Autorización" con comillas nuevamente, envía la solicitud, ¡raro!
¿Por qué después de cada recarga obtengo 400 errores a veces citando y otras veces quitando "Autorización"?
Gracias
Esto se debe a que la tienda no es persistente. Como puedo imaginar a partir de su código, ese estado no se mantiene globalmente, como Redux, por lo tanto, cuando actualiza, la tienda está vacía. Idealmente, cuando queremos que se envíe el token de acceso para la llamada API, tendrá dos opciones,
Puede leer más aquí: https://auth0.com/docs/security/data-security/token-storage#browser-in-memory-scenarios