419 ERROR CSRF Mismatch Laravel + AXIOS
Merhaba Herkese.
Laravel projemde bir bolumde Vue lazim oldu bana.
Her sey okeyde bir yerde takildim.
Axios ile post request atan zaman 419 hatasi aliyorum. CSRF Token mismatch yaziyor.
Halbuki axios.headersleri ayarladim. Hatta Ajaxda oldugu gibi data ya _token: csrf tokende yazdim ama nafile. Boyle bir hatayla karsilasan varsa aydinlatan olursa tesekkur ederim kodlarim sunlar:
> NOT: Bu arada Axios u da Vue nuda CDN den cekiyorum
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.js"></script>
var app = new Vue({
el: '#app',
delimiters: ['!{', '}!'],
data: {
productApi: 'http://localhost:8000/api/product',
cartApi: 'http://localhost:8000/f/addtocart',
token: '{{csrf_token()}}',
},
methods: {
addtocart(id) {
const options = {
headers: {'X-Requested-With' : 'XMLHttpRequest', 'X-CSRF-TOKEN': this.token}
};
axios.post(this.cartApi, {id: id}, options)
.then(response => {
console.log(response);
}).catch(error => {
console.log(response)
})
}
},
})
//Denedigim bazi diger sheyler
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
axios.defaults.headers.common['X-CSRF-TOKEN'] = window.Laravel.csrfToken;
//Ama ise yaramadi.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
layout kısmına meta etiketi ekleyin: (yani bu satır tüm sayfalarda olsun)
<meta name="csrf-token" content="{{ csrf_token() }}">
resources/js/bootstrap.js içinde
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
//yerine
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
şeklinde güncelleyip deneyin.