【发布时间】:2018-12-18 13:37:51
【问题描述】:
我在 PHP 7.2 上使用 Laravel 5.6 有多个页面
直到今天早上,当我使用另一台计算机登录时,一切都很好。正如文档中所述,我将我的 CSRF 令牌放在头脑中并为 ajax 获取它们。再次 - 页面一直有效,直到我在另一台计算机上登录。
现在我的 ajax 出现 419 个错误。我查看了我的 GIT 提交,发现 javascript 和 head 模板没有任何变化。
这显然(对我而言)是令牌不匹配或身份验证问题。但是我该如何调试呢?服务器端没有产生错误,从ajax返回的错误是
异常:"Symfony\Component\HttpKernel\Exception\HttpException"
文件:"E:\InetPub\LegacyLogin\LegacyLogin\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php"
线路:203
消息:“”
我有:
- 在 config/sessions.php 中检查超时
- 检查 csrf 标头是否 文档
- 尝试将 CSRF 令牌放入隐藏输入中
- 删除我的 cookie
- 注销/登录
- 重启 IIS
我陷入了僵局。
这是过去 3 周到今天我从另一台计算机登录时有效的代码。
Javascript/Jquery ajax 调用:
$.ajax({
url: "/app/personrep",
type: "POST",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
success: ()=>{
//window.location='/myinfo';
},
error: function(e) {
console.log(e);
}
});
在 app.blade.php 模板头中:
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
谁能给我指个方向。我什至拿走了其中一个文件(视图)并针对这里和 Laracast 的每一个建议进行了更改...
更新: 下面提供的排除工作......所以我有 2 个 json 字符串 - 一个正常工作,另一个导致 CSRF 出现问题。
--- 我让系统恢复工作。但我不知道发生了什么。我正在使用模型将 JSON 字符串存储在 MySQL 数据库中,之前,我手动从中删除了一个对象。 我在再次手动将 JSON 插入数据库之前验证了它,奇怪的是它影响了多个页面。如果是 JSON 错误,它应该在视图呈现期间出现。
当我得到这个工作时我松了一口气,我需要知道在这个应用程序投入生产之前发生了什么。 JSON 非常大,但如果它可以帮助有人帮助我诊断错误,我会发布它。
【问题讨论】: