【问题标题】:Laravel v8.x - Jetstream Inertia, 419 page expired on productionLaravel v8.x - Jetstream Inertia,419 页面在生产中过期
【发布时间】:2022-01-06 00:10:46
【问题描述】:
enter image description here
页面已过期 419 在生产时出现。
我尝试运行 php artisan clear:cache、php artisan config:cache、php artisan key:generate,并更改 SESSION_DOMAIN同域,但是页面还是报错
如果我停用 CSRF 中间件,它没有错误,但我无法进入下一页。
我可以在本地运行它,但是当我在本地使用生产数据库时会出现相同的错误页面。
【问题讨论】:
标签:
php
laravel
inertiajs
jetstream
expired-sessions
【解决方案1】:
我通过从主要的blade.php模板中删除这个元来修复它。
<meta name="csrf-token" content="{{ csrf_token() }}">
因为惯性页面上的这个警告:
如果您使用 Laravel,请务必从项目中省略 csrf-token 元标记,因为这会阻止 CSRF 令牌正确刷新。
【解决方案2】:
我认为 419 PAGE EXPIRED 可能存在两个或更多问题。
我无法通过更改 CRSF 令牌、删除它或禁用它来使其工作。
我认为实际原因与存储 SESSION_DRIVER 数据的权限有关。
默认情况下,.env 具有 SESSION_DRIVER=database。如果您的文件权限正确,则将数据库存储更改为文件存储 SESSION_DRIVER=file 有效。正确设置文件权限后,如果您愿意,请改回 SESSION_DRIVER=database。
我使用的是 SQLite3,唯一有效的方法是数据库位于 ~/laravel/stoarage/sqlite3.database