Laravel не устанавливает файл cookie XSRF-Token на живом сервере

Я создал приложение с Laravel 5.7.16 и Angular2, и на моем локальном хосте все работает нормально.

Однако на реальном сервере при отправке почтовых запросов я получал «ошибку 419». После некоторого исследования я пришел к выводу, что это, вероятно, связано с проблемой с XSRF-TOKEN. Затем, сравнивая то, что происходило на моем локальном хосте и на рабочем сервере, я заметил, что рабочий сервер не устанавливает файл cookie XSRF-TOKEN при первоначальном запросе.

Я явно не устанавливаю XSRF-TOKEN в моем HTTP-запросе Angular2, но насколько я понял, Angular2 делает это автоматически, если файл cookie XSRF-TOKEN изначально устанавливается серверным приложением.

Есть ли у кого-нибудь идеи, как я могу это решить?

Изменить: я только что попытался добавить один из моих маршрутов публикации приложений в массив $ except VerifyCsrfToken, и это работает. Однако это скорее обходной путь, чем реальное решение. Что интересно, после выполнения «разрешенного» маршрута возвращается XSRF-TOKEN, а все остальные маршруты работают. Я думаю, это подтверждает идею о том, что проблема в том, что XSRF-TOKEN не возвращается при начальной загрузке приложения. Почему это могло быть?

Спасибо.


person vjoe    schedule 19.12.2018    source источник


Ответы (2)


Здравствуйте, у меня была такая же проблема на моем локальном компьютере. Файл cookie XSRF-TOKEN не устанавливался в браузере. Я попробовал выполнить следующие действия, и проблема была решена.

  • Дайте разрешение папкам. sudo chmod -R 777 storage bootstrap/cache
  • Очистите кеш конфигурации и приложения. php artisan cache:clear && php artisan config:clear
person Iqbal Hussain    schedule 26.11.2019

Попробуйте очистить кеши Laravel

php artisan cache: очистить

А также очистить файлы cookie вашего браузера, чтобы убедиться, что сеанс еще не сохранен?

person Kiksy    schedule 19.12.2018
comment
Привет @Kiksy. Я попытался очистить кеш Laravel, но это не сработало. Если я использовал тот же браузер, который использую для тестирования приложения на моем локальном хосте, файлы cookie, установленные локальным хостом, работают с точки зрения прохождения проверки XSRF-TOKEN. Однако, если я использую другой браузер, XSRF-TOKEN не устанавливается. Я знаю обходные пути использования маршрутов api вместо веб-маршрутов или помещения маршрута сообщения в массив $ except VerifyCsrfToken. Однако я бы хотел избежать обходных путей ... - person vjoe; 21.12.2018