laravel表单提交显示419页已过期

时间:2019-07-16 07:40:14

标签: laravel form-submit

为什么我在提交表单时遇到419错误。我试图更改环境并启用调试true。但是仍然没有得到错误,只是让419页过期了。我知道为什么由于缺少crsf字段而得到此页面。但是我想查看除页面过期以外的实际错误。

2 个答案:

答案 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随附了401403404419429,{{1 }}和500错误页面。这些位于:

503

如果您想在启用调试时禁用此行为,并且您不在生产环境中,则可以将以下方法添加到/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views 类中:

app/Exceptions/Handler.php

以上内容将阻止Laravel检查该异常是否存在特定的错误文件。