419页面在添加CSRF令牌后在Laravel中过期

k5ifujac  于 2023-01-14  发布在  其他
关注(0)|答案(3)|浏览(193)

我正在一个Laravel 8框架,我已经添加了应用程序在现场Cpanel服务器,然后它开始显示以下错误:

419页已过期

我知道通常缺少CSRF令牌将是主要问题,但在此,我添加了CSRF令牌,我使用LARAVEL刀片语法,因此添加LARAVEL刀片形式语法时,将直接添加“令牌”(CSRF)。

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

这将自动添加CSRF,我已经尝试过直接添加,但每个POST请求都在419 PAGE EXPIRED页面上结束。
我已经检查了什么?

  • Form中未缺失CSRF Token
  • 我还检查了中间件,但在表单提交后,此请求未到达中间件,它将进入419页面
  • 还尝试php artisan cache:cleardump-autoload命令,但问题仍然存在。
  • 还为storagevendorcache文件夹添加了755权限。

请帮助我解决此问题我接下来需要检查什么才能解决此问题?

s4chpxco

s4chpxco1#

Laravel "419页已过期"错误故障排除步骤

应用/在测试您的应用程序是否存在此错误之前,请执行"步骤12"之前的所有步骤。

1.延长会话到期时间(即24小时)。
1.确保"会话域"与**"应用程序URL"**相同。
1.确保会话cookie被发送回"HTTP"和"HTTPS"浏览器连接的服务器。

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

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

APP_URL="http://myapp.local"
SESSION_LIFETIME=1440
SESSION_DOMAIN=myapp.local
SESSION_SECURE_COOKIE=false

1.请确保随(PUT/POST/DELETE/等)HTTP请求一起提交CSRF令牌。

  • (即:确保此请求参数与HTML表单请求<input type="hidden" name="_token" value="{{ csrf_token() }}" />一起提交)。
  • 如果您在应用程序中发出AJAX请求,您可以配置所有AJAX请求以始终发送CSRF令牌。
  • 将此"<meta>标签"添加到所有主VIEW模板/布局的<head>标签中。即:* * 资源/视图/布局/应用程序. blade. php资源/视图/布局/访客. blade. php资源/视图/欢迎. blade. php**
  • <meta name="csrf-token" content="{{ csrf_token() }}">
  • 然后,定义所需的HTTP请求标头并重新编译应用的静态资产(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)。
1.清除应用程序缓存。(即:php artisan cache:clear)。
1.确认应用程序调用方在应用程序的"sessions"和"cache"文件夹中具有 * 读和写 * 权限。(即:chmod -R 755 "storage/framework/sessions" && chmod -R 755 "bootstrap/cache")。

附录1:

1.如果您安装并启用了LaravelSanctum,请将您的应用程序域添加到"sancutum有状态域"的白名单中。

  • . env文件内容*

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

SANCTUM_STATEFUL_DOMAINS="myapp.local"

附录2:

1.确保"会话驱动程序"不为空。默认值为"文件"。

  • . env文件内容*
SESSION_DRIVER=file

附录3:

  1. Disable the browser cache。这在您的开发过程中可能是有益的。
    1.打开Web浏览器,导航到应用程序的主页,重新加载当前页面,忽略缓存的内容。(例如:在Windows上:Shift + F5Ctrl + Shift + r以及Mac上:⌘ + Shift + r)。
    1.* * 测试您的应用程序!**检查您是否仍然收到错误。

附录4(可选):

只有在到达第12步后仍出现相同错误时,才执行以下步骤。

A. Clear ALL web browser cache & cookies.测试您的应用程序!
B.打开一个完全不同的网页浏览器,然后再次测试。如果你一直在使用Google Chome/Safari,那么试试用Firefox测试。测试你的应用!
C.重新启动计算机并再次测试。测试您的应用程序!

tzdcorbm

tzdcorbm2#

1-php artisan route:clear
2-转到CSRF中间件并尝试将“*”添加到except数组中

v2g6jxz6

v2g6jxz63#

当这种情况发生在我身上时,是因为我忘记在表单中的输入中添加“name”属性

相关问题