我必须在我的kendo网格中发送_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令牌提供的保护?
答案 0 :(得分:2)
如果没有传递令牌,您就无法在Laravel中获得CSRF保护。
但是,根据Kendo UI Documentation,有一个名为transport.parameterMap
的方法允许操作请求参数。这应该允许您将令牌作为参数包含在一个地方的所有非读取请求中,而不必为所有操作单独指定它:
transport: {
...,
parameterMap: function(data, type)
{
if (type !== "read")
data._token = $('#incomeGrid').data('csrf');
return data;
}
}