首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TokenMismatchException laravel 5.3

TokenMismatchException laravel 5.3
EN

Stack Overflow用户
提问于 2016-11-14 15:09:18
回答 2查看 214关注 0票数 1

我需要理解为什么post请求会产生TokenMismatchException。我尝试了标准的解决方案

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

代码语言:javascript
运行
复制
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 @ jquery.js:4116

提前感谢

这是错误

代码语言:javascript
运行
复制
    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

代码语言:javascript
运行
复制
    $(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 );

这是带有错误的行

EN

回答 2

Stack Overflow用户

发布于 2016-11-14 15:25:13

您可以在您拥有的ajax请求中使用它:

代码语言:javascript
运行
复制
$.ajax({
    type: 'POST',
    url: '/<url>',
    data: JSON.stringify({id: '<?php echo $job->id?>', "_token": "{{ csrf_token() }}",}),
    contentType: 'application/json',
    dataType: 'json',
});

所以你的数据就像

代码语言:javascript
运行
复制
id: something,
_token: <the actual token>

你不需要做JSON

下面是指向CSRF文件部件的链接

票数 0
EN

Stack Overflow用户

发布于 2016-11-14 15:39:45

页面中有一个双令牌尝试删除其中一个,所以使用meta标记并从文档中删除#token,如下所示:

代码语言:javascript
运行
复制
$.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'
});

或者只是从文档中删除meta中的#token

代码语言:javascript
运行
复制
$.ajax({
    type: 'POST',
    url: '/play',
    data: JSON.stringify({'data': data, "_token": token}),
    contentType: 'application/json',
    dataType: 'array'
});

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40591912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档