1. 程式人生 > >laravel ajax POST請求 錯誤 TokenMismatchException in VerifyCsrfToken.php (line 68)

laravel ajax POST請求 錯誤 TokenMismatchException in VerifyCsrfToken.php (line 68)

因為: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) { } });