2016-11-14 11 views
1

投稿要求がTokenMismatchExceptionを作る理由を理解する必要があります。 私は標準液がTokenMismatchException laravel 5.3

<meta name="csrf_token" content="{{ csrf_token() }}">

headers: {'X-CSRF-Token': $('meta[name=csrf_token]').attr('content')} 

を追加することが、私はボタンを提出することをクリックすると、クロムコンソールログは私に

jquery.jsを示し、まだ試してみました:8625 POST http://local.game/play 500(内部サーバーエラー)@ jquery.jsを送信:8625ajax @ jquery.js:8161(匿名関数)@ index.js:10dispatch @ jquery.js:4430r.handle @ jqu ery.js:事前に4116の

おかげ

これは、これが今の私のjs

$(document).ready(function() { 
    $('.login-input').on('focus', function() { 
     $('.login').addClass('focused'); 
    }); 

    $('.login').on('submit', function (e) { 
     e.preventDefault(); 
     var data = $('.login-input').val(); 
     var token = $('#token').val(); 
     $('.login').removeClass('focused').addClass('loading'); 
     $.ajax({ 
      headers: {'X-CSRF-Token': $('meta[name=csrf_token]').attr('content')}, 
      type: 'POST', 
      url: '/play', 
      data: JSON.stringify({'data': data, "_token": token}), 
      contentType: 'application/json', 
      dataType: 'array' 
     }); 
    }); 
}); 

xhr.send(options.hasContent && options.data || null); 

これはエラーとラインである

Whoops, looks like something went wrong. 

1/1 
TokenMismatchException in VerifyCsrfToken.php line 68: 
in VerifyCsrfToken.php line 68 
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64 
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Router.php line 644 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618 
at Router->dispatchToRoute(object(Request)) in Router.php line 596 
at Router->dispatch(object(Request)) in Kernel.php line 267 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Kernel.php line 149 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116 
at Kernel->handle(object(Request)) in index.php line 53 

エラーにある

+1

「TokenMismatchException」エラーが表示されます。 –

+0

そこで、ユーザーが自分の名前と再生ボタンを挿入するために使用するリンク先ページがあります。クリック再生ボタンをクリックした後、url: "/ play"でajaxを呼び出すjsにコントロールを渡します。 laravel web.phpファイルでルートRoute :: post( '/ play'、 'provaController @ index')を追加します。 –

+1

投稿されたエラーに 'TokenMismatchException'エラーがないことを意味します。 –

答えて

0

これはajaxリクエストで使用できますあなたが持っている帽子:

$.ajax({ 
    type: 'POST', 
    url: '/<url>', 
    data: JSON.stringify({id: '<?php echo $job->id?>', "_token": "{{ csrf_token() }}",}), 
    contentType: 'application/json', 
    dataType: 'json', 
}); 

ですから、データは

id: something, 
_token: <the actual token> 

のようにあなたがここにJSON

を行う必要はありませんされますがCSRF documentation一部

+0

OPは既に 'headers:{'X-CSRF-Token':$( 'meta [ name = csrf_token] ')。attr(' content ')} 'を返します。 –

0

あなた」へのリンクですあなたのページにダブルトークンを入れてください。そのうち1つを削除しようとしていますので、metaタグを使用し、#tokenを次のように削除してください:

$.ajax({ 
    headers: {'X-CSRF-Token': $('meta[name=csrf_token]').attr('content')}, 
    type: 'POST', 
    url: '/play', 
    data: JSON.stringify({'data': data}), 
    contentType: 'application/json', 
    dataType: 'array' 
}); 

それとも#token文書から削除メタ中:

$.ajax({ 
    type: 'POST', 
    url: '/play', 
    data: JSON.stringify({'data': data, "_token": token}), 
    contentType: 'application/json', 
    dataType: 'array' 
}); 

は、この情報がお役に立てば幸いです。

+0

何も変更されていない –