Laravel 6显示419 |页面已过期

时间:2020-01-30 06:51:41

标签: laravel

在本地服务器中,以下laravel项目可以正常工作,但是当该项目在在线服务器上上传时,这表明存在问题。

尝试登录时先显示:

419 |页面已过期。

当我将其上传到在线服务时,我已经清除了路由,视图,缓存和配置。

5 个答案:

答案 0 :(得分:2)

此错误是由于CSRF令牌验证失败,缓存配置错误,权限,会话设置不正确引起的。用户提交发布请求时会显示此错误。您可以执行以下操作来解决它:

  1. CSRF令牌验证失败 419错误的最常见原因是CSRF令牌失败。 跨站点请求伪造是服务器生成的唯一的加密值。这包括在客户端的HTTP请求中。稍后,服务器对其进行验证。如果失败,则导致会话过期错误。 因此,您可以在Laravel配置中检查CSRF设置。

  2. 由于缓存导致会话过期错误 有时,缓存还可能导致前端会话过期错误。这可以是服务器缓存和浏览器缓存。因此,使用php artisan cache:clear清除服务器缓存。

  3. Laravel文件和文件夹权限 同样,不正确的文件或文件夹权限也可能导致错误。通常,Web服务器需要在Laravel文件夹存储和供应商上具有写权限。同样,会话存储需要写权限。因此,授予权限为

chmod -R 755 storage

chmod -R 755 vendor

chmod -R 644 bootstrap/caches
  1. Laravel会话设置 最后但并非最不重要的是,会话设置也可能导致419错误。 app / config / session.php是会话配置文件。检查一些重要参数-域和安全性。
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE', false), // in case of cookie

这些循序渐进的方法可以修复错误,并使Laravel再次正常工作。

答案 1 :(得分:0)

当CSRF令牌过期时,我们将显示此错误页面。当您加载带有表单的页面(例如,登录页面,注册页面),然后长时间提交表单后,通常会发生此问题。我们得到这个是因为CSRF在该时间之前已过期。

要解决此问题:

您可以在config/session.php文件中增加生存期。

答案 2 :(得分:0)

您的错误似乎与'csrf_token'有关。它丢失了csrf令牌,或者您的路由需要放入排除列表中。请参见laravel doc以获得帮助。

答案 3 :(得分:0)

就像上面其他人所说的,{{ csrf_field() }}放在登录表单下方,Laravel不允许请求伪造攻击。

答案 4 :(得分:0)

您的[2020-11-20T08:47:47.858 Thread=main @coroutine#2] [[CoroutineId(2), "coroutine#2":StandaloneCoroutine{Active}@3d04a311, BlockingEventLoop@7a46a697]] Launching coroutineA [2020-11-20T08:47:47.912 Thread=main @coroutine#2] [[CoroutineId(2), "coroutine#2":ScopeCoroutine{Active}@57fa26b7, BlockingEventLoop@7a46a697]] Starting coroutineA() [2020-11-20T08:47:47.921 Thread=main @coroutine#3] Launching coroutineB [2020-11-20T08:47:47.922 Thread=main @coroutine#3] [[CoroutineId(3), "coroutine#3":ScopeCoroutine{Active}@44e81672, BlockingEventLoop@7a46a697]] Starting coroutineB() [2020-11-20T08:47:48.929 Thread=DefaultDispatcher-worker-6 @coroutine#17] [[CoroutineId(17), "coroutine#17":StandaloneCoroutine{Active}@7e782624, Dispatchers.Default]] B4 [2020-11-20T08:47:48.929 Thread=DefaultDispatcher-worker-5 @coroutine#4] [[CoroutineId(4), "coroutine#4":StandaloneCoroutine{Active}@28a58b8f, Dispatchers.Default]] A1 文件中还有一个SESSION_LIFETIME键。

它是指使会话保持活动状态的分钟数,以分钟为单位。

我将我的问题设置为1分钟进行测试,但后来我忘记了,所以我的CSRF在填写表格时会很快过期。

我将修复时间设为60分钟:

.env