Laravel kategorisine ait yazılarım.

Laravel 5.1 Ajax CSRF Sorunu

Laravel 5.1 sürümünde ajax ile işlem yapmaya çalıştığınızda konsolda 500 (Internal Server Error) hatasını göreceksiniz. Bunun sebebi TokenMismatchException'dır yani bizim sayfamıza ulaşmadan önce Laravel 5 ile gelen Middleware bizden token istiyor. Göndermezsek de size cevap yok diyip kapatıyor kapıları. 

Çözüm:

Bunun çözümü gayet basit, ajax ile göndereceğimiz verilerin yanında token da göndereceksiniz. Bu işlem 2 şekilde yapılabilir.

Öncelikle formunuza _token isimli bir gizli input ekliyorsunuz ve değerine de laravel'in csrf_token() fonksiyonunu ekliyorsunuz. Yani aşağıdaki kod. Eğer laravel'in form sınıfını kullanıyorsanız bu input otomatik ekleneceği için eklemenize gerek yoktur.

 <input type="hidden" name="_token" value="{{ csrf_token() }}">

Sonra aşağıdaki jquery kodunu sayfanıza ekliyorsunuz.

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('input[name="_token"]').val()
    }
});

Bu kod; jquery ile gerçekleştirdiğiniz tüm ajax işlemlerine token gönderir. Bir diğer yöntem ise ajax işleminize _token anahtarınızı elinizle eklemek.