Я нашел ответ на аналогичный вопрос, в котором говорится, что вы можете отключить проверку Csrf, добавив записи в массив $Exception в app/Http/Middleware/VerifyCsrfToken.php . Я убедился, что это действительно устраняет ошибку 419:
Код: Выделить всё
protected $except = [
'contact',
'contact*',
];
Кто-нибудь знает, чем может отличаться новая среда Laravel, которая будет иметь такое поведение 419, несмотря на передачу сгенерированного токена? Я пробовал обновить несколько настроек ENV и переключать разные вещи, но ничто, кроме изменения массива $кроме, не оказало никакого влияния на проблему.
ОбновитьПоскольку до сих пор было небольшое обсуждение, я решил предоставить дополнительную информацию и код.
Во-первых, это форма Ajax, но не Пока не вскакиваю со своего места. Я тестировал форму как с Ajax, так и без него. Если я хочу протестировать с помощью Ajax, я просто нажимаю кнопку, подключенную к прослушивателю jQuery. Если нет, я меняю или удаляю идентификатор кнопки или запускаю $("#formName").submit(); в окне консоли.
Вышеупомянутое (ajax, старомодная submit и селектор jQuery с .submit();) приводят к одному и тому же ответу — ошибке 419.
И для полноты картины, вот мой код Ajax, который работает на всех других веб-сайтах, которые я размещаю. Я определил массив postData, чтобы все было в порядке, и добавил оператор console.log() сразу после него, чтобы (снова) подтвердить, что токен генерируется нормально и правильно передается вместе с запросом.< /p>
Код: Выделить всё
var postData = {
name: $("#name").val(),
email: $("#email").val(),
message: $("#message").val(),
_token: $("input[name=_token]").val()
};
console.log(postData);
$.post("/contact", postData, function (data) {
...
Обновление!
Поскольку другие сайты работают нормально, я клонировал старый сайт и просто перезаписываю файлы, которые я изменил для нового сайта, и бац! Теперь работает. Покопавшись еще немного, я запустил php artisan --version на клонированной версии сайта, а не на нерабочей, и вот результаты:
Рабочая версия: Laravel Framework 5.7.3
Нерабочая версия: Laravel Framework 5.7.9
Возможно, это ошибка Laravel? Или, возможно, некоторые пакеты на моем сервере устарели и их необходимо обновить для работы с новой версией Laravel?
Подробнее здесь: https://stackoverflow.com/questions/527 ... oken-issue
Мобильная версия