gpt4 book ai didi

php - 419 页面在 Laravel 中过期即使在添加 CSRF token 之后

转载 作者:行者123 更新时间:2023-12-05 02:31:24 25 4
gpt4 key购买 nike

我正在开发 Laravel 8 框架,我在实时 Cpanel 服务器上添加了应用程序,然后它开始显示以下错误:

419 页面已过期

我知道通常缺少 CSRF token 将是主要问题,但在此,我添加了 CSRF token ,我正在使用 LARAVEl blade 语法,因此添加 LARAVEL blade 语法将直接添加“ token ”(CSRF)。

 {{ Form::open( [ "url" => \URL::route("front.login.check"), "autocomplete"=>false,"id" => "login_form" ] ) }}

这将自动添加 CSRF,我试过直接添加,但是每个 POST 请求最终都会出现在 419 PAGE EXPIRED 页面上。

我已经检查了什么?

  • CSRF TokenForm
  • 中没有丢失
  • 我也检查了中间件,但是这个请求在表单提交后没有到达中间件,它将带到 419 页面
  • 也尝试 php artisan cache:cleardump-autoload 命令,但问题仍然存在。
  • 还为 storagevendorcache 文件夹添加了 755 权限。

请帮我解决这个接下来我需要检查什么来解决这个问题?

最佳答案

Laravel “419 页面已过期”错误排查步骤

在测试您的应用程序是否存在此错误之前,应用/完成所有步骤直至“第 12 步”。

  1. 增加你的session expiration time (即 24 小时)。
  2. 确保“session domain”与“应用网址”相同
  3. 确保 session cookies are sent back to the server for both "HTTP" & "HTTPS" browser connections .

.env 文件内容应用上述 3 个步骤。

myapp.local 更改为您的应用程序域。

APP_URL="http://myapp.local"
SESSION_LIFETIME=1440
SESSION_DOMAIN=myapp.local
SESSION_SECURE_COOKIE=false
  1. 确保你 submit a CSRF token连同您的 ( PUT/POST/DELETE/etc.) HTTP 请求。
  • (即:确保此请求参数与您的 HTML 表单请求一起提交 <input type="hidden" name="_token" value="{{ csrf_token() }}" />)。
  • 如果您在应用程序中发出 AJAX 请求,您可以将所有 AJAX 请求配置为始终发送 CSRF token 。
    • <meta> 中添加这个“<head> 标签”所有主视图模板/布局的标签。即:resources/views/layouts/app.blade.phpresources/views/layouts/guest.blade.phpresources/views/welcome.blade .php
      • <meta name="csrf-token" content="{{ csrf_token() }}">
    • 然后,定义所需的 HTTP 请求 header 并重新编译应用的静态 Assets (npm run dev)。 resources/js/app.js
$.ajaxSetup({
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
"X-Requested-With": "XMLHttpRequest"
}
});
  1. 重新生成您的 application key自动地。 (即:php artisan key:generate)。
  2. 清除您的应用缓存。 (即:php artisan cache:clear)。
  3. 确认应用程序调用者在应用程序的“ session ”和“缓存”文件夹中具有读和写权限。 (即:chmod -R 755 "storage/framework/sessions" && chmod -R 755 "bootstrap/cache")。

附录 1:

  1. 如果万一你有 Laravel Sanctum安装并启用,将您的应用程序域添加到“sanctum stateful domains”的白名单中。

.env 文件内容

myapp.local 更改为您的应用程序域。

SANCTUM_STATEFUL_DOMAINS="myapp.local"

附录 2:

  1. 确保您的“ session 驱动程序”不为空。 The default value is "file" .

.env 文件内容

SESSION_DRIVER=file

附录 3:

  1. Disable the browser cache .这在您的开发过程中可能会有所帮助。

  2. 打开您的 Web 浏览器,导航至应用程序的主页,重新加载当前页面,忽略缓存的内容。 (即:在 Windows 上:Shift + F5Ctrl + Shift + r 以及在 Mac 上:⌘ + Shift + r)。

  3. 测试您的应用!检查您是否仍然收到错误。

附录 4(可选):

仅当您到达第 12 步并且仍然遇到相同错误时才执行以下步骤。

一个。 Clear ALL web browser cache & cookies . 测试您的应用!

B.打开一个完全不同的网络浏览器并再次测试。如果您一直在使用 Google Chome/Safari,请尝试使用 Firefox 进行测试。 测试您的应用!

C.重新启动计算机并再次测试。 测试您的应用!

关于php - 419 页面在 Laravel 中过期即使在添加 CSRF token 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71540756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com