Bagaimana cara mengirim header otentikasi dengan token melalui axios.js? Saya telah mencoba beberapa hal tanpa hasil, misalnya:
const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });
Memberi saya kesalahan ini:
XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
Saya telah berhasil membuatnya berfungsi dengan menyetel default global, tetapi saya rasa ini bukan ide terbaik untuk satu permintaan:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Pembaruan:
Jawaban Cole membantu saya menemukan masalahnya. Saya menggunakan middleware django-cors-headers yang sudah menangani header otorisasi secara default.
Tetapi saya dapat memahami pesan kesalahan dan memperbaiki kesalahan dalam kode permintaan axios saya, yang seharusnya terlihat seperti ini
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
sumber
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
Coba ini :
axios.get( url, {headers: { "name" : "value" } } ) .then((response) => { var response = response.data; }, (error) => { var status = error.response.status } );
sumber
Ini berhasil untuk saya:
let webApiUrl = 'example.com/getStuff'; let tokenStr = 'xxyyzz'; axios.get(webApiUrl, { headers: {"Authorization" : `Bearer ${tokenStr}`} });
sumber
Daripada menambahkannya ke setiap permintaan, Anda bisa menambahkannya sebagai konfigurasi default seperti itu.
axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}`
sumber
Anda hampir benar, sesuaikan saja kode Anda dengan cara ini
const headers = { Authorization: `Bearer ${token}` }; return axios.get(URLConstants.USER_URL, { headers });
perhatikan di mana saya menempatkan backticks, saya menambahkan '' setelah Bearer, Anda dapat menghilangkan jika Anda pasti akan menangani di sisi server
sumber
-
), antara skema autentikasi dan token. Saya belum pernah melihat jenis server apa pun yang memerlukan tanda hubung seperti yang Anda tunjukkan, dan sebagian besar, jika tidak semua, akan mengembalikan kesalahan jika disediakan.Daripada memanggil fungsi axios.get, Gunakan:
axios({ method: 'get', url: 'your URL', headers: { Authorization: `Bearer ${token}` } })
sumber
Anda bisa mencobanya.
axios.get( url, {headers: { "Access-Control-Allow-Origin" : "*", "Content-type": "Application/json", "Authorization": `Bearer ${your-token}` } } ) .then((response) => { var response = response.data; }, (error) => { var status = error.response.status } );
sumber
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,OPTIONS,Accept,Authorization, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
perubahan ini telah memperbaiki masalah saya, coba saja!
sumber
Instal
cors
middleware. Kami mencoba menyelesaikannya dengan kode kami sendiri, tetapi semua upaya gagal total.Ini membuatnya berhasil:
cors = require('cors') app.use(cors());
Tautan asli
sumber