在Laravel应用程序中提交表单时遇到问题。报告了 419错误。
我的代码:
<form action="login" method="POST">
<input id="csft_pass" type="hidden" name="_token" value="{{ csrf_token() }}">
.....
</form>
我尝试修复它:
<form action="login" method="POST">
@csrf
.....
</form>
但是,仍然出现错误419
上述代码仍能正常运行,今天突然出现错误
我尝试了许多类似php artisan cache:clear
的方法,但仍然无法解决问题。
我的Laravel版本:5.8
更新:我在stackoverflow上尝试了很多解决方案,但仍然无法解决。我认为是因为应用程序的会话有问题
答案 0 :(得分:1)
表单标签后,使用 csrf_field 。
{{ csrf_field() }}
如果您使用的是 ajax ,则可以在元标记上传递 csrf 令牌。
<meta name="csrf-token" content="{{ csrf_token() }}">
答案 1 :(得分:0)
您可以使用str_replace
帮助器来生成令牌字段:
csrf_field
OR
<form method="POST" action="/login">
@csrf
...
</form>
它不起作用,然后刷新浏览器缓存,现在它可能起作用。
为什么需要:刷新浏览器缓存
当我们更新应用程序时,浏览器可能仍会使用旧文件。如果您不清除缓存,则旧文件在您申请时可能会遇到问题。
有关更多详细信息,请打开链接:-Error - 419 Sorry, your session has expired
答案 2 :(得分:0)
上述代码仍能正常运行,今天突然出现错误
这使我怀疑仅在提交表单之前打开表单两个小时以上(这是lifetime
中的config/session.php
的默认值)时才会发生错误。
在这种情况下,您可以将lifetime
设置为120分钟以上的值,或者在前端进行一些操作以保持会话的存活,例如某些自定义JavaScript(用于单个表单),如所选内容中所述。 this thread或Laravel Caffeine(针对整个应用)的答案
答案 3 :(得分:0)
替换这些行
<input type="hidden" name="_token" value="{{ csrf_token() }}">