Статус 419 в проекте Laravel с балансировщиком нагрузки

Возможно, это может сработать:

избавиться от прерывания.

 message wait_and_pop(std::condition_variable& interrupt) {
    std::unique_lock<std::mutex> lock(mutex);
    {
        new_msg_notification.wait(lock,[&]{
            return !queue.empty() || stop;
        });

        if( !stop )
        {
            auto msg(std::move(queue.front()));
            queue.pop();
            return msg;
        }
        else
        {
            return NULL; //or some 'terminate' message
        }
}

В деструкторе замените interrupt.notify_all() на new_msg_notification.notify_all()

1
задан Bernardo Kowacic 16 January 2019 в 12:51
поделиться

1 ответ

Полагаю, вы используете драйвер сеанса по умолчанию, а именно файлы. Из-за этого ваши сеансы установлены на одном сервере, а другой сервер не знает об этом сеансе. Набор токенов csrf в форме создается и проверяется с использованием текущего сеанса для посетителя, если этот запрос будет отправлен на другой сервер, вы получите ошибку 419, поскольку этот сервер не знает о сеансе.

Чтобы решить эту проблему, вы должны использовать драйвер сеанса, который может использоваться несколькими серверами, такими как database, memcached или redis.

0
ответ дан Jerodev 16 January 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: