Php Laravel 5.4令牌不匹配异常和注销

Php Laravel 5.4令牌不匹配异常和注销,php,jquery,ajax,laravel,laravel-5.4,Php,Jquery,Ajax,Laravel,Laravel 5.4,我有史以来最奇怪的错误,不知道从哪里开始调试。我有一个表格,我用它向客户发送电子邮件。此表单通过ajax提交到服务器,并返回响应 $.post('{{ route('some.route') }}', $('#check-form').serialize(), function (data) { buildNotification('Success', "Sent email, 'success'); doAction('rese

我有史以来最奇怪的错误,不知道从哪里开始调试。我有一个表格,我用它向客户发送电子邮件。此表单通过ajax提交到服务器,并返回响应

$.post('{{ route('some.route') }}', $('#check-form').serialize(), function (data) {
                buildNotification('Success', "Sent email, 'success');

                doAction('reset', true);
            }).fail(function (err) {
                buildNotification('Error!!!', err.message !== undefined ? err.message : "Failed sending email", 'danger');

                doAction('reset', true);
            });
我还在表单中设置了
{{csrf_field()}
,如果我在网络选项卡中签入Chrome Dev Tools,我可以看到设置了`_token'字段

问题是,当我提交请求时,服务器的响应是
标记不匹配异常的HTML
。我禁用了指定路由的令牌验证,但仍然得到
令牌不匹配异常

在这之后,如果我刷新页面,我会再次重定向到登录页面(因此会话可能会被破坏)。我搜索了所有我能找到的东西,但似乎没有任何东西适用于我的情况

我注意到的另一件事是,我只在Chrome上运行时才会出现这种行为(在我的例子中是Chrome)。我还尝试了隐姓埋名模式,因为我认为某些扩展可能会导致错误,但没有,仍然是相同的问题


关于如何解决这个问题有什么想法吗?

这是Laravel使用Axios配置任何ajax调用的方式。取自bootstrap.js

/**
 * Register the CSRF Token as a common header with Axios so that
 * all outgoing HTTP requests automatically have it attached. This is just
 * a simple convenience so we don't have to attach every token manually.
 */

let token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
然而,当您使用JQuery时,您需要确保您已经配置了ajax设置,以便它可以通过crsf字段,如下所示

// main.blade.php
<meta name="csrf-token" content="{{ csrf_token() }}" />


// boostrap.js, after you have imported jquery

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
//main.blade.php
//boostrap.js,在导入jquery之后
$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
});

希望这能起到作用。

虽然这是一个有效的观点,但OP已经提到,他们正在数据有效负载的形式中包含令牌。是的。CSRF令牌已通过名为
\u令牌的隐藏
输入在表单字段中发送。。我认为这可能是一个Chromium bug,因为在Chrome或Firefox中,一切似乎都正常工作:/