【问题标题】:Laravel 6 Showed 419 | page expiredLaravel 6 显示 419 |页面已过期
【发布时间】:2020-01-30 06:51:41
【问题描述】:

在本地服务器中,以下 laravel 项目工作正常,但是当项目上传到在线服务器时,它显示了问题。

尝试登录时显示:

419 |页面已过期。

我在上传在线服务时已经清除了路由、视图、缓存和配置。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    此错误是由于 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 再次工作。

    【讨论】:

    • @Belal Khan 哪一部分对你有用?目前我也有问题
    【解决方案2】:

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

    【讨论】:

    • 我用pwa怎么添加csrf_field,我用的是sanctum
    【解决方案3】:

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

    解决这个问题:

    您可以增加config/session.php 文件中的生命周期。

    【讨论】:

    • 先生,我增加了会话的生命周期,但它仍然无法正常工作
    【解决方案4】:

    您的错误似乎与“csrf_token”有关。要么是缺少 csrf 令牌,要么你的路由需要放在排除列表中。请参阅laravel doc 寻求帮助。

    【讨论】:

      【解决方案5】:

      .env 文件中还有 SESSION_LIFETIME 键。

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

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

      我将它设置为 60 分钟来修复:

      SESSION_DRIVER=file
      SESSION_LIFETIME=60
      

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 2022-06-11
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        • 2020-06-02
        • 2019-08-15
        相关资源
        最近更新 更多