Estoy usando Laravel 5.2 para mi aplicación web y tengo una página con múltiples solicitudes ajax por el mismo evento. En $.ajax, configuré async: true, a veces muestra un error de discrepancia de token CSRF y redirecciona a la página de inicio de sesión. Sin embargo, cuando configuro Async: false en ajax, funciona bien pero lleva mucho tiempo.
Por favor, ayúdenme para que no muestre un error de discrepancia de token.
en su formulario, cree un nombre de archivo oculto _token, puede usar este método auxiliar para generar un campo
{!! csrf_field() !!}en javascript tienes que buscar este valor de campo
var token = $( "input[name='_token']" ).val(); $.ajax({ method: "POST", url: "some.php", data: { name: "John", location: "Boston",_token:token } });otra forma de crear un lapso oculto o agregarle un atributo de datos div
<div id="token" data-token="{{ csrf_token() }}"></div>buscar en valor de datos javascript
var token = $( "#token" ).data('token'); $.ajax({ method: "POST", url: "some.php", data: { name: "John", location: "Boston",_token:token } });Dijiste que usas
$.ajaxSetup({ headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } });
Tal vez en algún lugar de los encabezados en las anulaciones de solicitudes, intente cambiarlo en
$.ajaxSetup({ beforeSend: function(xhr) { xhr.setRequestHeader('X-CSRF-Token', $('meta[name=_token]').attr('content') ); } });Por favor, modifique su variable de URL así:
url: '/my-route'+'?_token=' + '{{ csrf_token() }}',