Comment puis-je envoyer un en-tête d'authentification avec un jeton via axios.js? J'ai essayé quelques trucs sans succès, par exemple:
const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });
Me donne cette erreur:
XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
J'ai réussi à le faire fonctionner en définissant la valeur par défaut globale, mais je suppose que ce n'est pas la meilleure idée pour une seule demande:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Mettre à jour :
La réponse de Cole m'a aidé à trouver le problème. j'utilise middleware django-cors-headers qui gère déjà l'en-tête d'autorisation par défaut.
Mais j'ai pu comprendre le message d'erreur et corriger une erreur dans mon code de requête axios, qui devrait ressembler à ceci
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
la source
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
Essaye ça :
la source
Cela a fonctionné pour moi:
la source
Plutôt que de l'ajouter à chaque requête, vous pouvez simplement l'ajouter comme configuration par défaut comme ceci.
la source
Vous avez presque raison, ajustez simplement votre code de cette façon
remarquez où je place les backticks, j'ai ajouté `` après Bearer, vous pouvez omettre si vous serez sûr de gérer du côté serveur
la source
-
), entre le schéma d'authentification et le jeton. Je n'ai jamais vu aucun type de serveur exiger un tiret comme vous l'avez montré, et la plupart sinon tous renverraient une erreur s'il en était fourni un.Au lieu d'appeler la fonction axios.get, utilisez:
la source
ce changement a résolu mon problème, essayez!
la source
Installez le
cors
middleware. Nous essayions de le résoudre avec notre propre code, mais toutes les tentatives ont lamentablement échoué.Cela l'a fait fonctionner:
Lien d'origine
la source
Vous pouvez essayer ceci.
la source