Di aplikasi react saya, saya menggunakan axios untuk melakukan permintaan REST api.
Tetapi tidak dapat mengirim header Otorisasi dengan permintaan tersebut.
Ini kode saya:
tokenPayload() {
let config = {
headers: {
'Authorization': 'Bearer ' + validToken()
}
}
Axios.post(
'http://localhost:8000/api/v1/get_token_payloads',
config
)
.then( ( response ) => {
console.log( response )
} )
.catch()
}
Di sini validToken()
metode hanya akan mengembalikan token dari penyimpanan browser.
Semua permintaan memiliki respon kesalahan 500 yang mengatakan itu
Token tidak dapat diurai dari permintaan
dari ujung belakang.
Bagaimana cara mengirim header otorisasi dengan setiap permintaan? Apakah Anda akan merekomendasikan modul lain dengan react?
axios
masalah sama sekali. periksavalidToken()
fungsi Anda , fungsi mengembalikan sesuatu yang tidak dimengerti oleh server Anda.Jawaban:
Parameter pertama adalah URL.
Yang kedua adalah badan JSON yang akan dikirim bersama permintaan Anda.
Parameter ketiga adalah header (antara lain). Yaitu JSON juga.
sumber
Bearer
harus digunakan dengan modal B, bukan?Berikut adalah cara unik untuk menyetel token Otorisasi di axios. Menyetel konfigurasi ke setiap panggilan axios bukanlah ide yang baik dan Anda dapat mengubah token Otorisasi default dengan:
Edit , Terima kasih kepada Jason Norwood-Young.
Beberapa API mengharuskan pembawa untuk ditulis sebagai Pembawa, jadi Anda dapat melakukan:
Sekarang Anda tidak perlu menyetel konfigurasi ke setiap panggilan API. Sekarang token Otorisasi disetel ke setiap panggilan axios.
sumber
Bearer
perlu menggunakan huruf besar untuk beberapa API (saya menemukan cara yang sulit).Parameter kedua
axios.post
adalahdata
(tidakconfig
).config
adalah parameter ketiga. Silakan lihat ini untuk detailnya: https://github.com/mzabriskie/axios#axiosposturl-data-configsumber
Anda dapat membuat konfigurasi satu kali dan menggunakannya di mana saja.
sumber
headers: {'Authorization': 'Bearer '+token}
const instance = (token) => axios.create({ baseURL: `${config.API_URL}`, timeout: 1000, headers :{ 'authorization': 'Bearer ' + token } })
Dengan menggunakan pencegat Axios:
sumber
Jika Anda ingin beberapa data setelah melewati token di header maka coba kode ini
sumber
Ini berfungsi dan saya perlu menyetel token hanya sekali di
app.js
:Kemudian saya dapat membuat permintaan di komponen saya tanpa menyetel header lagi.
"axios": "^0.19.0",
sumber
axios
dengan sendirinya hadir dengan dua "metode" yang bergunainterceptors
yang tidak lain adalah middlewares antara permintaan dan respons. jadi jika di setiap permintaan Anda ingin mengirim token. Gunakaninterceptor.request
.Saya membuat paket yang membantu Anda:
Sekarang Anda dapat menggunakan axios sebagai kelas
Maksud saya penerapannya
middleware
tergantung pada Anda, atau jika Anda lebih suka membuataxios-es6-class
https://medium.com/@enetoOlveda/how-to-use-axios-typescript-like-a-pro-7c882f71e34a sendiri, itu adalah medianya pos dari mana asalnyasumber
Inilah yang juga saya hadapi. Token yang Anda berikan salah.
Cukup Hardcode token dan pass, Anda akan mendapatkan respons yang benar. Tetapi jika token tidak dikirimkan dalam tanda kutip tunggal '', maka pasti akan gagal. Itu harus dalam format 'Otorisasi': 'Bearer YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MmI4MDJkNQ', di mana setelah Bearer harus ada satu spasi, juga di dalam tanda kutip tunggal.
IMP: Kode di atas akan berfungsi Tetapi jika Anda memposting sesuatu seperti:
'Otorisasi': 'Pembawa' + YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MmI4MDJkNQ, itu akan gagal
atau ----- kode di bawah ini juga akan gagal, saya harap u memahami perbedaan dasarnya
sumber