Я работаю над приложением Laravel 5, для которого включена защита CSRF по умолчанию для всех запросов POST. Мне нравится эта добавленная безопасность, поэтому я пытаюсь работать с ней.
При создании простого запроса $.post()
я получил ошибку 'Illuminate\Session\TokenMismatchException'
, потому что в данных POST отсутствовал необходимый ввод формы _token
. Ниже приведен пример запроса $.post:
var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
У меня есть мой токен CSRF, который хранится в мета-поле в моем заголовке и может легко получить к нему доступ, используя:
var csrf_token = $('meta[name="csrf-token"]').attr('content');
Можно ли добавить это к json-данным во все исходящие запросы $.post()
? Я пытался использовать заголовки, но Laravel, похоже, не узнал их -
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);
}
});