Laravel v8.x - Jetstream Inertia, страница 419 просрочена на производстве
введите описание изображения здесь
страница просрочена 419 появляется в процессе производства. Я попытался запустить php artisan clear: cache , php artisan config:cache, php artisan key:generate, а также изменить SESSION_DOMAIN с тем же доменом, но на странице все еще возникает ошибка
если я деактивирую промежуточное ПО CSRF, ошибки не будет, но я не смогу перейти на следующую страницу.
Я могу запустить его локально, но когда я использую производственную базу данных локально, у меня такая же страница с ошибкой.
3 ответа
Я думаю, что с 419 PAGE EXPIRED могут быть две или более проблем.
Мне так и не удалось заставить его работать, изменив токен CRSF, удалив его или отключив.
Я думаю, что фактическая причина связана с разрешениями, в которых хранятся данные SESSION_DRIVER.
По умолчанию .env имеет SESSION_DRIVER=database. Изменение хранилища базы данных на хранилище файлов SESSION_DRIVER=file работает, если ваши права доступа к файлам правильные. Как только вы правильно установите права доступа к файлу, вернитесь к SESSION_DRIVER=database, если хотите.
Я использовал SQLite3, и это работало только в том случае, если база данных находилась в ~/laravel/stoarage/sqlite3.database.
Я исправил это, удалив эту мету из основного шаблона blade.php.
<meta name="csrf-token" content="{{ csrf_token() }}">
из-за этого предупреждения на странице inertiajs:
Если вы используете Laravel, не забудьте опустить метатег csrf-token в своем проекте, так как это помешает правильному обновлению токена CSRF.
Использование useForm вместо Inertia решило это для меня.