PHP и Laravel
Laravel 419 Page Expired при отправке формы
Laravel показывает 419 Page Expired после отправки формы. Разберём связь с сессией, защитным токеном и устаревшей страницей.
Что происходит и с чего начать
Форма Laravel может содержать защитный токен, связанный с сессией пользователя. Сервер проверяет его, чтобы отличать допустимую отправку от подделанного запроса. Если страница устарела или сессия изменилась, проверка может завершиться 419. Но точное поведение зависит от приложения. Поэтому сначала выясните, возникает ли ошибка сразу после открытия формы или только после долгого ожидания. Постоянный отказ у новой страницы требует другой проверки, чем единичная отправка из давно открытой вкладки.
Что можно проверить самостоятельно
- Проверьте форму сразу после открытия в приватном окне и после паузы. Запишите, зависит ли 419 от времени ожидания или возникает при каждой отправке.
- Обратите внимание на изменения адреса между открытием и отправкой: домен, поддомен, HTTP или HTTPS. Сообщите также, разлогинивает ли сайт на соседних страницах.
- Проверьте сохранность введённого текста после отказа. Для воспроизведения используйте тестовые данные; копировать действующие cookie или защитные токены в открытое обращение не нужно.
Как понять результаты проверки
Сессия хранит состояние посетителя, а cookie помогает связать браузер с ним. Если cookie не передаётся или сервер читает другое хранилище, корректный токен страницы может перестать соответствовать текущей сессии. Разработчик проверяет оба механизма, а не только наличие скрытого поля формы. Отдельно изучается работа нескольких серверов и кеша. Исключение всей формы из защиты без объяснения допустимого сценария не является обычным способом ремонта: причина должна быть устранена с сохранением нужных проверок.
Что проверяет разработчик
Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.
- Откройте свежую форму в новой сессии и сравните с давно открытой вкладкой. Проверьте наличие токена в запросе и передачу сессионной cookie.
- Сверьте домен, HTTPS и параметры cookie. Переход между поддоменами или неправильное распознавание прокси может менять сессию.
- Проверьте хранилище сессий и общий кеш страницы. Нельзя раздавать всем посетителям HTML с токеном одной сессии.
На что обратить внимание
Если сервер теряет сессию между показом формы и отправкой, правильный для браузера токен уже не совпадает с серверным. Отключение CSRF скрывает симптом, но оставляет проблему авторизации и защиты.
Как исправляют причину
Восстановите устойчивое хранение сессий и правильные параметры cookie. Для внешних webhook используйте отдельный маршрут и предусмотренную проверку подлинности вместо общего отключения защиты форм.
Как убедиться, что проблема решена
Проверьте свежую форму, истечение сессии и работу через основной HTTPS-домен. При истечении доступа интерфейс должен предложить обновление или повторный вход без ложного успеха.
После исправления проверьте свежую форму, отправку после паузы и переходы между страницами. При действительно истёкшей сессии человек должен получить понятный способ продолжить без потери большого текста. Убедитесь, что вход и корзина не начали терять состояние. Полезный результат — предсказуемое поведение сессии и формы, а не просто замена 419 на безусловное принятие любого запроса.