I am working on a Laravel 5 app that has CSRF protection enabled by default for all POST requests. I like this added security so I am trying to work with it.
While making a simple $.post()
request I received a 'Illuminate\Session\TokenMismatchException'
error because the required form input _token
was missing from the POST data. Here is an example of a $.post request in question:
var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
I have my CSRF token stored as a meta field in my header and can easily access it using:
var csrf_token = $('meta[name="csrf-token"]').attr('content');
Is it possible to append this to the json data on all outgoing $.post()
requests? I tried using headers but Laravel did not seem to recognize them -
var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
_token
field? (e.g., something likeoptions['data']._token = csrf_token
?) A single example of a working request would be helpful, if you have one. – apsillers{id:userID, '_token':token}
– NightMICUoptions['data']._token = csrf_token;
does not seem to get the job done, but close. Post a working answer, please, and you've got a +1 and accepted answer. :) – NightMICU