Каждое обновление страницы генерирует новый токен CSRF, который разрешает ошибку 419: страница не найдена — LaravelPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Каждое обновление страницы генерирует новый токен CSRF, который разрешает ошибку 419: страница не найдена — Laravel

Сообщение Anonymous »

Я столкнулся с этой проблемой несколько дней назад после того, как запустил свой веб-сайт в эксплуатацию. После входа в систему или регистрации или любого другого запроса POST выдает ошибку «Страница не найдена 419». На локальном хосте все работает нормально.
Мне уже потребовалось более 4 дней исследований, и я не смог найти решение.
Вероятно, это связано с проверкой CSRF, но все возможные решения я уже рассмотрел пробовал (безуспешно).
Что я сделал:
  • после каждой формы, в которой есть метод POST, который я добавил @csrf
  • включено в разделе head
  • изменил SESSION_DOMAIN в файле .env на мой рабочий домен< /li>
    очистил кеш браузера с последующими командами:

    Код: Выделить всё

    php artisan cache:clear
    php artisan Route:clear php artisan view:clear php artisan config:clear php artisan view:cache php artisan Route:cache< /li>
    сгенерирован новый APP_KEY с ключом php artisan:generate
  • попробовал переключиться между SESSION_DRIVERS из файл в базу данных
  • проверил весь код на наличие внутренних интервалов перед тегом ?
  • дала разрешения 777 на www-data на всю папку (отчаянный поступок)
Главное я' Я заметил, что токен csrf на локальном хосте генерируется один раз и после обновления страницы. остается прежним, когда, с другой стороны, на веб-сервере после каждого обновления страницы он меняется. Похоже, сеанс не может хранить эту информацию и приводит к ошибке.
Вот мой файл .env

Код: Выделить всё

APP_NAME=Laravel
APP_ENV=production
APP_KEY=base64:s15iIzuybt78V7zZ7cHqcwCRAr1h6YfEWPArlrcqW3A=
APP_DEBUG=false
APP_URL=http://mydomain.tk

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=root
DB_PASSWORD=dbpass

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN=http://mydomain.tk

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Я использую Laravel Framework версии 8.61.0 и PHP 8.0.10.
Сработали только те решения, которые я прокомментировал в веб-разделе config/Kernel.php< /code> this -> \App\Http\Middleware\VerifyCsrfToken::class. Но это не полностью работающее и безопасное решение, которое я искал. Итак, мой вопрос: существуют ли другие подходы к отладке этой проблемы или решения, которые могут помочь? Спасибо большое, ребята. Если вам нужно что-то знать, просто спросите.

Подробнее здесь: https://stackoverflow.com/questions/691 ... -not-found
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»