[英]Laravel 5 - TokenMismatchException
我將Web應用程序遷移到其他服務器,此后出現此錯誤:
VerifyCsrfToken.php第46行中的TokenMismatchException:
這很奇怪,因為在其他形式中,每種方法都可以像以前一樣完美地工作,只有一頁出現了此錯誤。 當然,我的表格中有以下一行:
<input name="_token" type="hidden" value="{{{ csrf_token() }}}" />
我嘗試清理緩存,向供應商添加權限,存儲。 清理此目錄,並一直返回錯誤。
在我的瀏覽器中,我清理了cookie和緩存,但仍然出現此錯誤。
<form action="{{url('video/upload')}}" id="qq-form">
<input name="_token" type="hidden" value="{{ csrf_token() }}" />
</form>
用這個:
{{ csrf_token() }}
代替:
{{{ csrf_token() }}}
或者只是使用csrf_field()
構建表單元素:
{{ csrf_field() }}
您已經說過您正在使用Dropzone。 在這種情況下,您還需要設置X-CSRF-TOKEN
。 在Blade模板中:
<meta name="csrf-token" content="{{ csrf_token() }}">
在JS中:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
如果您使用AJAX或類似的方式提交表單。 添加:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
在您的ajax調用之前。
您需要將{{csrf_field()}}放置在其他元素之外。 因此,將其視為自己的元素。 您沒有將其放置為屬性。 我總是像我一樣。
<form>
{{ csrf_field() }}
</form>
打開表單后,只需在刀片文件中使用如下所示的csrf_field()
即可:
{{ csrf_field() }}
或者,您可以在頭部添加以下代碼:
<meta name="csrf-token" content="{{ csrf_token() }}">
如果您使用AJAX,請在ajax調用中保留以下代碼:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
如果仍然出現TokenMismatchException錯誤,請通過修改app / Http / Middleware / VerifyCsrfToken.php 禁用特定路由的CSRF令牌
class VerifyCsrfToken extends BaseVerifier
{
// The URIs that should be excluded from CSRF verification.
protected $except = [
"/*"
];
}
盡管上述過程可以解決您的問題,但是不建議禁用CSRF令牌,因此僅當您急於解決問題並且以后可以修改代碼時才使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.