Tengo esta función en react.js que debería acceder a un marco de descanso de django usando un acceso de token:
getAll(token) { axios.defaults.headers.common['Authorization'] = "Token " + token return axios.get('http://localhost:8000/api/todos/');sigo recibiendo:
OBTENGA http://localhost:8000/api/todos/ 401 (no autorizado)
He intentado llamar a la solicitud http en Insomnia y todo parece estar bien. la solicitud curl exitosa de Insomnia es
curl --request GET \ --url http://127.0.0.1:8000/api/todos \ --header 'Authorization: Token 9a60ef4a5fbaab1b0fa9c3e8e8a5626b757e148d' \ --header 'Content-Type: application/json' \ --cookie csrftoken=MtpItNeHebjs7OaAfTTJBO3x4ezh5FfnVg1mNjOuNTy1piK9DXxSusb4oxW2qy1e¿Cómo implementaría esta solicitud de token usando axios en react.js?
Creo que el problema podría ser
"Token " + tokenCreo que el resto de la API está buscando un token de portador como autorización, por lo que es posible que desee utilizar
axios.defaults.headers.common['Authorization'] = "Bearer " + tokenSí, la respuesta de Mandip Giri funcionaría.
Aunque por conveniencia, sugeriría crear el archivo src/utility/axiosInstance.js o algo equivalente con contenidos como este:
import axios from 'axios'; export const axiosInstance = axios.create({ baseURL: 'https://example.com', }); export const setToken = (token) => { const auth = `Bearer ${token}`; axiosInstance.defaults.headers.common['Authorization'] = auth; };Luego importa axiosInstance y el método setToken en cualquier componente que necesite y use de acuerdo con los requisitos.