laravel ajax POST請求 錯誤 TokenMismatchException in VerifyCsrfToken.php (line 68)
阿新 • • 發佈:2019-01-30
因為:laravel 預設開啟了 csrf驗證
下面有幾種方法解決:
1.
<form id="editForm">
{{ csrf_field() }}
....
2.
<form id="editForm">
<input type="hidden" name="_token" value="{csrf_token()}"/>
....
注意 :其實第一和第二是一碼事 第一種方式只不過 laravel給你封裝了一下。
上面都是針對form表單提交
下面看一下不是表單的形式提交資料
3.
$.ajax({
type: "post",
url: "{{ route('edit_msg') }}",
dataType: "json",
data: {'msg':newMsg, 'type':str, '_token': "{!! csrf_token() !!}"},
error:function(msg){ //處理出錯的資訊
var errormessage="再試一次" ;
$(".loginerror").html(errormessage);
},
success: function(data) {
}
});
注意後面的data提交的資料 _token欄位。
4.我們也可以在ajax請求頭新增X-CSRF-Token
<meta name="_token" content="{!! csrf_token() !!}"/>
$.ajax({
type: "post" ,
url: "{{ route('edit_msg') }}",
dataType: "json",
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') },
data: {'msg':newMsg, 'type':str},
error:function(msg){ //處理出錯的資訊
var errormessage="再試一次";
$(".loginerror").html(errormessage);
},
success: function(data) {
}
});