v2.5.2
Giriş yap

419 ERROR CSRF Mismatch Laravel + AXIOS

ibrahimali
861 defa görüntülendi

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.
        
fatihozpolat
1254 gün önce

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.