Laravel 6 显示 419 页面已过期

作者:编程家 分类: laravel 时间:2025-08-09

如何解决 Laravel 6 显示 419 | 页面已过期 错误

当你使用 Laravel 6 进行开发时,你可能会遇到一个常见的错误页面,即 "419 | 页面已过期" 错误。这个错误通常出现在你提交表单后,页面停留时间过长导致 Laravel 生成的 CSRF 令牌过期。

这个问题可以通过几种方法来解决,下面将详细介绍每种方法并提供相应的代码示例。

方法一:使用 @csrf Blade 指令

Laravel 提供了一个方便的 Blade 指令,用于生成隐藏字段并包含 CSRF 令牌。你只需在表单中添加 `@csrf` 指令即可。这样,每次提交表单时,Laravel 将自动验证 CSRF 令牌,并且你不再会遇到 "419 | 页面已过期" 错误。

下面是一个简单的表单示例:

html

@csrf

在这个例子中,`@csrf` 指令会生成一个隐藏字段,并将 CSRF 令牌作为其值。当你提交表单时,Laravel 会自动验证 CSRF 令牌,从而避免 "419 | 页面已过期" 错误的发生。

方法二:使用 AJAX 请求

另一种解决 "419 | 页面已过期" 错误的方法是使用 AJAX 请求。通过使用 AJAX,你可以在不刷新整个页面的情况下提交表单数据,并且可以避免 CSRF 令牌过期的问题。

下面是一个使用 jQuery 发送 AJAX 请求的示例:

javascript

$(document).ready(function() {

$('form').submit(function(event) {

event.preventDefault();

var formData = $(this).serialize();

$.ajax({

url: '/your-route',

type: 'POST',

data: formData,

success: function(response) {

// 请求成功的处理逻辑

},

error: function(xhr) {

// 请求失败的处理逻辑

}

});

});

});

在这个例子中,我们使用了 jQuery 的 `$.ajax` 方法来发送 POST 请求,并将表单数据序列化后作为请求的数据。通过使用 AJAX,我们可以避免页面刷新,并且不会遇到 "419 | 页面已过期" 错误。

方法三:增加会话过期时间

如果你发现 "419 | 页面已过期" 错误经常发生,你可以考虑增加会话的过期时间。默认情况下,Laravel 的会话过期时间是 120 分钟(2 小时),你可以根据自己的需求进行调整。

打开 `config/session.php` 文件,找到以下代码行:

php

'lifetime' => env('SESSION_LIFETIME', 120),

将 `120` 更改为你希望的会话过期时间(以分钟为单位)。例如,如果你希望将会话过期时间设置为 4 小时,可以将代码修改为:

php

'lifetime' => env('SESSION_LIFETIME', 240),

保存文件后,重新运行你的 Laravel 应用程序,会话的过期时间就会根据你的设置而延长。

在本文中,我们介绍了三种解决 Laravel 6 显示 "419 | 页面已过期" 错误的方法。通过使用 `@csrf` Blade 指令、使用 AJAX 请求或增加会话过期时间,你可以有效地避免这个错误的发生。选择适合你项目需求的方法,并根据提供的代码示例进行实施。