首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >419页在Laravel中过期,即使添加了CSRF令牌

问419页在Laravel中过期,即使添加了CSRF令牌
EN

Stack Overflow用户
提问于 2022-03-19 18:07:53
回答 2查看 4.6K关注 0票数 3

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

419页过期

我知道通常缺少的CSRF令牌将是主要的问题,但在这里,我已经添加了CSRF令牌,我使用的是LARAVEl刀片语法,这样添加LARAVEL刀片表单语法就可以直接添加“令牌”。

代码语言:javascript
复制
 {{ Form::open( [ "url" => \URL::route("front.login.check"), "autocomplete"=>false,"id" => "login_form" ] ) }}

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

我已经查过什么了?

  • CSRF Token在Form中没有丢失
  • 我也检查过中间件,但是这个请求在表单提交后没有到达中间件,它将被带到419页面。
  • 也尝试使用php artisan cache:clear和dump-autoload命令,但问题仍然存在。
  • 还将755权限添加到storage、vendor和cache文件夹中。

请在这个上帮助我,我下一步需要检查什么来解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-19 22:10:27

Laravel "419页过期“错误排除步骤

在测试应用程序是否有此错误之前,应用/通过所有步骤到“步骤12”。

  1. 增加会话到期时间 (即24小时)。
  2. 确保"会话域“是,而是"app”。
  3. 确保会话cookies被发送回服务器,用于"HTTP“和"HTTPS”浏览器连接。

应用上述三个步骤的.env文件内容.

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

代码语言:javascript
复制
APP_URL="http://myapp.local"
SESSION_LIFETIME=1440
SESSION_DOMAIN=myapp.local
SESSION_SECURE_COOKIE=false
  1. 确保你和你的(PUT/POST/DELETE/etc.)一起提交CSRF令牌HTTP请求。
  • (即:确保将此请求参数与HTML <input type="hidden" name="_token" value="{{ csrf_token() }}" />一起提交)。
  • 如果在应用程序中发出AJAX请求,则可以将所有AJAX请求配置为始终发送CSRF令牌。
    • 将这个"<meta>标记“添加到所有主视图模板/布局的<head>标记中。I.:resources/views/layouts/app.blade.php和resources/views/layouts/guest.blade.php,resources/views/welcome.blade.php
      • <meta name="csrf-token" content="{{ csrf_token() }}">

代码语言:javascript
复制
- Then, define the required HTTP request headers and recompile your app's static assets (`npm run dev`). **resources/js/app.js**
代码语言:javascript
复制
$.ajaxSetup({
    headers: {
        "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        "X-Requested-With": "XMLHttpRequest"
    }
});
  1. 自动重新生成应用键。(即:php artisan key:generate)
  2. 清除应用程序缓存。(即:php artisan cache:clear)
  3. 确认应用程序调用方在应用程序的“会话”和“缓存”文件夹中具有读写权限。(即:chmod -R 755 "storage/framework/sessions" && chmod -R 755 "bootstrap/cache")

增编1:

  1. 如果您安装并启用了拉勒维尔桑克姆,请将您的应用程序域添加到“神圣有状态域”的白名单中。

.env文件内容

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

代码语言:javascript
复制
SANCTUM_STATEFUL_DOMAINS="myapp.local"

增编2:

  1. 确保您的“会话驱动程序”不是空的。默认值为"file“。。

.env文件内容

代码语言:javascript
复制
SESSION_DRIVER=file

增编3:

  1. 禁用浏览器缓存。这在您的开发过程中可能是有益的。
  2. 打开web浏览器,导航到应用程序的主页,重新加载当前页面,忽略缓存的内容。(即:在:Shift + F5或Ctrl + Shift + r和Mac:⌘ + Shift + r上)。
  3. 测试您的应用程序!检查您是否仍然收到错误。

增编4(任择):

只有当您到达步骤12并且仍然有相同的错误时,才执行下面的步骤。

A. 清除所有web浏览器缓存和cookie.测试你的应用程序!

打开一个完全不同的网页浏览器,然后再进行测试。如果您一直使用Google / Safari,请尝试使用Firefox进行测试。测试你的应用程序!

重新启动计算机并再次测试。测试你的应用程序!

票数 3
EN

Stack Overflow用户

发布于 2022-03-19 19:24:51

1- php artisan route:clear

2-转到CSRF中间件,并尝试将"*“添加到除了数组

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71540756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档