我知道大多数419 error
与csrf
中的Laravel
令牌有关,并且我已经正确添加了meta
标签并将其附加到每个ajax
请求。我遇到问题的页面不是ajax
提交。
<meta name="csrf-token" content="{{ csrf_token() }}">
对于任何其他表单,我正在使用spatie/laravel-html回购,因此它将_token
添加到所有表单上。
以下是其中一种格式的html
<form method="POST" action="https://example.com/login" class="needs-validation">
<input type="hidden" name="_token" value="NmvrH2BZtzCg4ity9cRDG9JXgJER3EUtO0BnXxGH">
<div class="form-group">
<label for="email" class="form-control-label required">Email</label>
<input type="email" name="email" id="email" placeholder="Email" required="required" class="form-control">
</div>
<div class="form-group">
<label for="password" class="form-control-label required">Password</label>
<input type="password" name="password" id="password" placeholder="Password" required="required" class="form-control">
</div>
<div>
<span data-href="https://example.com/register" class="clickable-row btn float-left">Sign Up</span>
<button type="submit" class="btn float-right">Login</button>
</div>
</form>
在我的项目中,只有一条路线/account
导致了419 error
。奇怪的是,第一次单击update
时会引发错误,然后如果我返回同一页面,它将起作用。
我曾尝试清除cache
,更改路由名称或更改生产中storage
的文件夹权限,但似乎没有任何解决办法。
我还能做些什么来解决该错误?
谢谢
答案 0 :(得分:0)
尝试在SESSION_DRIVER=file
文件中设置.env
然后运行
php artisan config:clear
php artisan cache:clear
然后重试
答案 1 :(得分:0)
根据https://laravel.com/docs/5.8/csrf,使用csrf令牌创建元标记可用于ajax请求。您仍然需要在要提交的表单中添加一个csrf令牌字段。尝试在表单中添加@csrf
。它将使用令牌创建一个隐藏字段。
<form method="POST" action="/target">
@csrf
...
</form>