Laravel CSRF 令牌不匹配异常。通过 jQuery ajax 向资源路由发送 "Put" 请求
Laravel CSRF token mismatch exception. Sending "Put" request to a resource route via jQuery ajax
我需要向资源路由发送 PUT 请求,路由定义为:
Route::resource('posts','PostController');
我的代码像这样工作正常:
var data = $(this).serializeArray();
data.push( {name:'_token',value:"{{ csrf_token() }}" })
$.ajax({
type: "Put",
url: _url,
data: data,
dataType: "json",
success: function (response) {
if(response.status){
toastr.success(response.msg);
}
else{
toastr.warning(response.msg);
}
},
});
但是当我不得不通过路由发送文件时,问题就来了,为此我不得不将我的提交功能修改为:
var data = new FormData(this);
data.append("_token","{{ csrf_token() }}");
var _url = $(this).attr('action');
$.ajax({
type: "Put",
url: _url,
data: data,
dataType: "json",
processData: false,
contentType: false,
success: function (response) {
if(response.status){
toastr.success(response.msg);
}
}
我遇到异常消息 "CSRF token Mismatch"。这是因为我用了 FormData()
?
将 csrf 添加到您的 blade
<meta name="csrf-token" content="{{ csrf_token() }}">
然后通过headers发送它以避免通过附加数据发送它
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
并删除此行 data.append("_token","{{ csrf_token() }}");
并尝试
我需要向资源路由发送 PUT 请求,路由定义为:
Route::resource('posts','PostController');
我的代码像这样工作正常:
var data = $(this).serializeArray();
data.push( {name:'_token',value:"{{ csrf_token() }}" })
$.ajax({
type: "Put",
url: _url,
data: data,
dataType: "json",
success: function (response) {
if(response.status){
toastr.success(response.msg);
}
else{
toastr.warning(response.msg);
}
},
});
但是当我不得不通过路由发送文件时,问题就来了,为此我不得不将我的提交功能修改为:
var data = new FormData(this);
data.append("_token","{{ csrf_token() }}");
var _url = $(this).attr('action');
$.ajax({
type: "Put",
url: _url,
data: data,
dataType: "json",
processData: false,
contentType: false,
success: function (response) {
if(response.status){
toastr.success(response.msg);
}
}
我遇到异常消息 "CSRF token Mismatch"。这是因为我用了 FormData()
?
将 csrf 添加到您的 blade
<meta name="csrf-token" content="{{ csrf_token() }}">
然后通过headers发送它以避免通过附加数据发送它
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
并删除此行 data.append("_token","{{ csrf_token() }}");
并尝试