Как решить Laravel 419 ошибка токена csrf - PullRequest
0 голосов
/ 27 февраля 2020

Я знаю, что в основном 419 error имеет отношение к токену csrf в Laravel, и я правильно добавил тег meta и прикрепляю его к каждому запросу ajax. Страница, с которой у меня проблема, не является ajax отправкой.

<meta name="csrf-token" content="{{ csrf_token() }}">

Для любых других форм я использую spatie / laravel - html репо, поэтому он добавляет _token на всех формах.

Ниже приводится html одной из форм

<form method="POST" action="https://example.com/login" class="needs-validation">
    <input type="hidden" name="_token" value="NmvrH2BZtzCg4ity9cRDG9JXgJER3EUtO0BnXxGH">
    <div class="form-group">
        <label for="email" class="form-control-label required">Email</label>
        <input type="email" name="email" id="email" placeholder="Email" required="required" class="form-control">
    </div>
    <div class="form-group">
        <label for="password" class="form-control-label required">Password</label>
        <input type="password" name="password" id="password" placeholder="Password" required="required" class="form-control">
    </div>
    <div>
        <span data-href="https://example.com/register" class="clickable-row btn float-left">Sign Up</span>
        <button type="submit" class="btn float-right">Login</button>
    </div>
</form>

В моем проекте только один маршрут /account вызывает 419 error. Странно то, что он выдает ошибку при первом нажатии update, а затем, если я go возвращаюсь на ту же страницу, это работает.

Я попытался очистить cache, изменить имя маршрута или изменить разрешение папки storage на производстве, но, похоже, ничего не решает проблему.

Что еще можно сделать, чтобы устранить ошибку?

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Согласно https://laravel.com/docs/5.8/csrf создание метатега с токеном csrf может использоваться для ajax запросов. Вам все еще нужно добавить поле токена csrf в формы, которые вы отправляете. Попробуйте добавить @csrf в вашей форме. Это создаст скрытое поле с токеном.

<form method="POST" action="/target">
    @csrf
    ...
</form>
0 голосов
/ 27 февраля 2020

Попробуйте установить SESSION_DRIVER=file в вашем .env файле

Затем запустите

php artisan config:clear
php artisan cache:clear

И повторите попытку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...