2017-05-08 10 views
7

サーバーにPOSTリクエストを送信するたびに、TokenMismatchExceptionエラーが発生します。私はすでに以前CSRFトークンの不一致| Laravel 5.4

<input type="hidden" name="_token" value= "{{csrf_token()}}"> 

を送信しようとしている、私は、サーバーへの情報のこの特定の部分を送信するためにajaxHeaderを使用していたが、それはまた、同じエラーを投げています。

私はさらにデバッグし、VerifyCsrfTokenファイルでそれを見つけました。

protected function tokensMatch($request) 
    { 
     $token = $this->getTokenFromRequest($request); 
     return is_string($request->session()->token()) && 
       is_string($token) && 
       hash_equals($request->session()->token(), $token); 
    } 

array:3 [ 
"sessionToken" => "rgicYLOUhb2kLLChpVByNLQO1KVMb0Gkjzb7ZtTN" //$request->session()->token() 
"requestToken" => "IgXWquvnfujZJ1Vs9vbSgpjgX3rAnd5PpeklRvBD" // $request->input('_token') ?: $request->header('X-CSRF-TOKEN') 
"laravel_token" => "rgicYLOUhb2kLLChpVByNLQO1KVMb0Gkjzb7ZtTN" //csrf_token() 
] 

私はミドルウェアトークンマッチ機能の上に配列を取得しています。誰も私にこの特定の問題の理由と解決策を教えてもらえますか? 以下はupvoteボタンのクリックで呼び出され、私は

function likeReview(id) 
    { 
     var like_span = $('#like_'+id); 
     var like_div = $('#likeDiv_'+id); 
     var like_span_text = $('#likeText_'+id); 
     $.ajax({ 
      type: 'post', 
      url: '{{route('like.review')}}', 
      data: {review_id: id}, 
      beforeSend: function() { 
      }, 
      success: function (data) { 
       if(data.status == 'success') 
       { 
        var like = like_span.html(); 
        var sum = 0; 
        if(data.like == 1){ 
         sum = parseInt(like)+1; 
         like_div.addClass('upvoted-active'); 
         like_span_text.html('UPVOTED'); 
        } else { 
         sum = parseInt(like)-1; 
         like_div.removeClass('upvoted-active'); 
         like_span_text.html('UPVOTE'); 
        } 
        like_span.html(sum); 
       } 
      }, 
      error: function (xhr, textStatus, thrownError) { 
       alert('Something went wrong. Please try again!'); 
      } 
     }); 
    } 

機能を使用していアヤックスである

<div class="js-btn-thank-area upvoted-active js-activity-root" id="likeDiv_{{$review->id}}"> 
    <a href="javascript:;" onclick="likeReview({{$review->id}})" class="thank-btn"> 
    <i class="fa fa-arrow-up fa-fw"></i> 
    <span class="feed-action-text" id="likeText_{{$review->id}}">UPVOTED</span> 
    </a> 
    <div class="stats-thanks" id="like_{{$review->id}}">                  
    {{$review->likes()->where('like','=',1)->count()}} 
    </div> 
</div> 
+0

あなたのコードを投稿してください。どのようにデータを送信しますか? –

+1

問題が発生している場所でフォーム送信とAjaxコードを投稿しますか? –

+2

https://laravel.com/docs/5.4/csrf#csrf-x-csrf-tokenを見ましたか –

答えて

2

だけでは動作しませんAJAXを投稿するためのフィールドとしてCSRFを使用して、

$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } }); 

あなたはajaxコールを設定する前に:)!

EDIT:あなたのajaxリクエストのデータ部分に入れることもできます。

data: { 
    review_id: id, 
    "_token": "{{ csrf_token() }}" 
} 

EDITstorageからクリアする一時的なデータを明確にするためには、チャットでこの問題を解決しました。

+0

あなたは既にそれが動作していないと述べた方法の両方を試みた。 – Shwetank

+0

htmlフォームからcsrfトークンを削除しましたか? –

+0

私はあなたがもっと具体的になることはできませんでしたか? 'のあなたはまだ問題がある場合、'その後、私の変更のいずれかを使用して応答をプリントアウト: – Shwetank

関連する問題