Я работаю над приложением Laravel 5, в котором по умолчанию включена защита CSRF для всех запросов POST. Мне нравится эта дополнительная безопасность, поэтому я пытаюсь с ней работать.
При выполнении простого $.post() запроса я получил 'Illuminate\Session\TokenMismatchException' ошибку, потому что требуемый ввод формы _token отсутствовал в данных POST. Вот пример рассматриваемого запроса $ .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);
}
});
_token? (например, что-то вродеoptions['data']._token = csrf_token?) Один пример рабочего запроса был бы полезен, если он у вас есть. - person apsillers   schedule 09.02.2015{id:userID, '_token':token}- person NightMICU   schedule 09.02.2015options['data']._token = csrf_token;, похоже, не выполняет свою работу, но закрывается. Отправьте рабочий ответ, и вы получите +1 и принятый ответ. :) - person NightMICU   schedule 09.02.2015