gpt4 book ai didi

php - Laravel 5.4 TokenMismatchException 和注销

转载 作者:搜寻专家 更新时间:2023-10-31 21:48:52 25 4
gpt4 key购买 nike

我遇到了有史以来最奇怪的错误,不知道从哪里开始调试。我有一个用于向客户发送电子邮件的表格。此表单通过 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 开发工具,我可以看到“_token”字段已设置。

当我提交请求时,服务器的响应是 TokenMismatchException 的 HTML。我禁用了指定路由的 token 验证,但我仍然得到一个 TokenMismatchException..

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

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

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

最佳答案

这就是 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')
}
});

希望这能解决问题。

关于php - Laravel 5.4 TokenMismatchException 和注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com