【发布时间】:2019-03-06 03:17:06
【问题描述】:
我安装了 Laravel 5.7
向文件\resources\views\welcome.blade.php添加了一个表单
<form method="POST" action="/foo" >
@csrf
<input type="text" name="name"/><br/>
<input type="submit" value="Add"/>
</form>
添加到文件\routes\web.php
Route::post('/foo', function () {
echo 1;
return;
});
发送 POST 请求后:
419 抱歉,您的会话已过期。请刷新并重试。
5.6 版本没有这样的问题。
【问题讨论】:
-
您是否尝试过添加重定向?您可以致电
return redirect()->back();,而不是return;。从我所见,该应用程序在发布请求后无事可做。也许您可以在处理请求后将其重定向到视图。 -
我遇到了同样的问题。当我切换到数据库会话时,会发生这种情况,当我在
.env中将SESSION_DRIVER更改回file时,它工作正常。为什么基于数据库的会话不起作用。 -
我将您的确切代码复制到了全新的 laravel 5.7 安装中。有效。其他地方有问题。
-
这个问题是因为token问题。我曾尝试像这样运行相同的代码,但没有错误。您应该提供更多信息,例如会话驱动程序、表单中的 _token 值显示。另外,你可以在这个文件
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php第67行调试自己了解原因 -
我意识到我将
sessions表用于不同的目的。将此表名称更改为更合适的名称并运行artisan session:table并刷新迁移后,一切正常