2016-11-14 6 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 (Внутренняя ошибка сервера) send @ jquery.js: 8625ajax @ jquery.js: 8161 (анонимная функция) @ index.js: 10dispatch @ jquery.js: 4430r.handle @ jqu ery.js: 4116

Заранее спасибо

Это ошибка

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 

Это мой 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); 

это строка с ошибкой

+1

Где вы видите ошибку "TokenMismatchException"? –

+0

Итак, у меня есть целевая страница, которую пользователь использует, чтобы вставить свое имя и кнопку воспроизведения. После нажатия кнопки воспроизведения я передаю элемент управления js, которые делают ajax-вызов с url: «/ play». В файле laravel web.php я добавляю маршрут Route :: post ('/ play', 'provaController @ index'); –

+1

Я имею в виду, что в отправленной ошибке нет ошибки «TokenMismatchException». –

ответ

0

Вы можете использовать это в запросе ajax t шляпа у вас есть:

$.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 уже передает заголовки: {'X-CSRF-Token': $ ('meta [ name = csrf_token] '). attr (' content ')} 'в запросе ajax. –

0

You» ve двойной токен на вашей странице попытайтесь удалить один из них, поэтому используйте тег 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

ничего не изменилось –

Смежные вопросы