为什么我在提交表单时遇到419错误。我试图更改环境并启用调试true。但是仍然没有得到错误,只是让419页过期了。我知道为什么由于缺少crsf字段而得到此页面。但是我想查看除页面过期以外的实际错误。
答案 0 :(得分:1)
在表单字段上添加@csrf令牌。
<form action="" method="">
@csrf
.
.
</form>
这是逻辑:
@csrf
或{{csrf_field()}}
使用csrf_token
创建输入。 Laravel帖子请求搜索_token
。如果不存在,则看起来为x-csrf-token
。
在此文件中:
laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken
在tokensMatch()
上。
然后,如果令牌不存在,则会引发异常。
在这里:laravel/framework/src/Illuminate/Foundation/Exceptions
prepareException()
如果您正在使用Ajax调用,只需在发送方法之前添加
beforeSend: function(xhr, type) {
if (!type.crossDomain) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
},
不要忘记添加元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
然后它中止419。我的意思是没有真正的错误。它只是中止错误页面。
答案 1 :(得分:0)
您没有看到实际错误的原因是因为Laravel通过检查文件中是否存在特定的HTTP错误代码并渲染该HttpException
而不是使用Whoops或Synfony来渲染错误。
开箱即用,Laravel随附了401
,403
,404
,419
,429
,{{1 }}和500
错误页面。这些位于:
503
如果您想在启用调试时禁用此行为,并且您不在生产环境中,则可以将以下方法添加到/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views
类中:
app/Exceptions/Handler.php
以上内容将阻止Laravel检查该异常是否存在特定的错误文件。