Wie kann ich einen Authentifizierungsheader mit einem Token über axios.js senden? Ich habe ein paar Dinge ohne Erfolg ausprobiert, zum Beispiel:
const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });
Gibt mir diesen Fehler:
XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
Ich habe es geschafft, es durch Festlegen eines globalen Standards zum Laufen zu bringen, aber ich vermute, dass dies nicht die beste Idee für eine einzelne Anfrage ist:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Update:
Coles Antwort half mir, das Problem zu finden. Ich verwende die Middleware django-cors-headers, die standardmäßig bereits den Autorisierungsheader verarbeitet.
Aber ich konnte die Fehlermeldung verstehen und einen Fehler in meinem Axios-Anforderungscode beheben, der so aussehen sollte
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
quelle
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
Versuche dies :
quelle
Das hat bei mir funktioniert:
quelle
Anstatt es zu jeder Anfrage hinzuzufügen, können Sie es einfach als Standardkonfiguration hinzufügen.
quelle
Sie sind fast richtig, passen Sie einfach Ihren Code auf diese Weise an
Beachten Sie, wo ich die Backticks platziere. Ich habe '' nach Bearer hinzugefügt. Sie können darauf verzichten, wenn Sie sicher sind, dass Sie auf der Serverseite damit umgehen
quelle
-
zwischen dem Authentifizierungsschema und dem Token ein Leerzeichen und kein Bindestrich ( ). Ich habe noch nie gesehen, dass ein Servertyp einen Strich erfordert, wie Sie gezeigt haben, und die meisten, wenn nicht alle, würden einen Fehler zurücksenden, wenn einer bereitgestellt würde.Anstatt die Funktion axios.get aufzurufen, verwenden Sie:
quelle
Diese Änderung hat mein Problem behoben, probieren Sie es einfach aus!
quelle
Installieren Sie die
cors
Middleware. Wir haben versucht, es mit unserem eigenen Code zu lösen, aber alle Versuche sind kläglich gescheitert.Damit hat es funktioniert:
Ursprünglicher Link
quelle
Sie können dies versuchen.
quelle