Как решить: Токен CSRF недействителен

Ошибка

The CSRF token is invalid. Please try to resubmit the form.

Эта ошибка иногда появляется в формах symfony2, но после обновления форма успешно сохранена.

Эта ошибка возникает не часто при сохранении формы.

Я пробовал в каждом браузере одинаково.

При обновлении токена страницы обновляются скрытые поля ввода, но ошибка остается прежней.

я погуглил и нашел полезную статью, которая предлагает

{{form_rest(form)}}

использовать перед закрытием тега формы.

Вот мой код

Код Twig

<div id = "{{ formID }}_container" class = "main">
    <div class = "page">
        <div id = "{{ formID }}_output"></div>

        {% include 'Bundle:Form:required_msg.html.twig' %}
        {{form_start(form, { 'attr' : { 'id': formID } })}}

        <div style = "display: none">
            {{form_rest(form)}}
        </div>

        {{form_end(form)}}
    </div>
</div>

У меня есть это скрытое поле:

<input id = "form_id" name = "details_form[_token]"  value = "somevalue" type = "hidden">

Это данные моей формы:

details_form[_token]    value
details_form[age]   
details_form[gender]    F

Это ответ на запрос:

{"success":false,"msg":"Form is invalid.","errors":[{"name":"[0]","message":"The CSRF token is invalid. Please try to resubmit the form."}]

Другой ответ, который я видел в переполнении стека (Токен CSRF недействителен. Пожалуйста, попробуйте повторно отправить форму), говорит об этом:

public function setDefaultOptions(OptionsResolverInterface $resolver) {
    $resolver->setDefaults(array(
        'options' => array(),
        csrf_protection'   => false
    ));
}

Но я не хочу устанавливать флаг csrf_protection на false. Может ли кто-нибудь предложить лучший способ решения этой проблемы?

Может можно попробовать этот stackoverflow.com/a/21366066/9750031

Andrew Vakhniuk 05.06.2018 12:50

Нет, у меня ничего не работает, любое другое решение, пожалуйста

afeef 05.06.2018 14:21

Может быть, вы можете сделать это csrf_protection' => false и сгенерировать токен и самостоятельно проверить его вручную, возможно, в прослушивателе событий

Andrew Vakhniuk 05.06.2018 15:15

можете ли вы сказать, почему появляется токен csrf, даже если другие формы работают

afeef 05.06.2018 15:33

Вы проверяли, присутствует ли скрытый ввод токена прямо перед возникновением ошибки csrf?

Andrew Vakhniuk 05.06.2018 15:43

А большая у тебя форма или нет? если он большой, проверьте это stackoverflow.com/a/26766676/9750031

Andrew Vakhniuk 05.06.2018 15:45

Может быть, токен находится внутри дисплей: нет? вы можете удалить этот CSS и попробовать еще раз?

gvf 05.06.2018 23:30

Спасибо, Эндрю, это решение сработало для меня.

afeef 06.06.2018 08:49

может ли кто-нибудь предложить, как получить количество max_input_vars с токеном csrf, в настоящее время я следил за URL-адресом stackoverflow.com/questions/12169818/…

afeef 06.06.2018 11:07

который показывает длину max_input_vars 1000, но я не уверен, учитывает ли он токен csrf, пожалуйста, предложите

afeef 06.06.2018 11:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
11
8 258
0

Другие вопросы по теме