Я должен отправить _token с каждой сеточной операцией (кроме чтения) в моей сетке кендо, иначе я получаю ошибку несоответствия токена:
...
transport: {
read: {
url: '/core/income-grid/read',
dataType: 'json',
type: 'get'
},
update: {
url: '/core/income-grid/update',
dataType: 'json',
type: 'post',
data: function(data){
data._token = $('#incomeGrid').data('csrf');
return data;
}
},
create: {
url: '/core/income-grid/create',
dataType: 'json',
type: 'post',
data: function(data){
data._token = $('#incomeGrid').data('csrf');
return data;
}
},
destroy: {
url: '/core/income-grid/destroy',
dataType: 'json',
type: 'post',
data: function(data){
data._token = $('#incomeGrid').data('csrf');
return data;
}
}
},
...
Есть ли способ обойти это и при этом иметь защиту, которую обеспечивает токен csrf?
Вы не можете иметь защиту CSRF в Laravel без передачи токена.
Однако, согласно Кендо UI Документация есть метод, называемый transport.parameterMap
что позволяет манипулировать параметрами запроса. Это должно позволить вам включить токен в качестве параметра для всех не читаемых запросов в одном месте, вместо того, чтобы указывать его для всех операций по отдельности:
transport: {
...,
parameterMap: function(data, type)
{
if (type !== "read")
data._token = $('#incomeGrid').data('csrf');
return data;
}
}
Других решений пока нет …