При сбое проверки формы за CloudFront пользователь отправляется в root, а не обратно в форму

У меня есть сайт SilverStripe, работающий на двух серверах за балансировщиком нагрузки, за CloudFront. Redis хранит информацию о сеансе, и у меня есть задача синхронизации, которая синхронизирует все необходимые ресурсы. Все это работает нормально.

У меня есть форма, которая имеет различные обязательные поля. Когда форма заполнена правильно, она работает нормально и направляет человека в нужное место. Однако, если пользователь пропускает поле, он должен перенаправить обратно в форму. Вместо этого он перенаправляет их на /, Если я щелкну обратно в браузере, он вернется к форме, и будут выделены правильные поля, которые отсутствуют.

Если я проверю это на моей локальной машине, то все будет работать как положено. Если я подключусь к одному из серверов в prod, он также будет работать нормально, даже если я переключаюсь между двумя серверами вручную.

В своих путешествиях я понял, что мне нужно определить балансировщик нагрузки в _ss_environment.php файл:

define('SS_TRUSTED_PROXY_IPS', 'x.x.x.x/16');
define('SS_TRUSTED_PROXY_IP_HEADER', 'X-Forwarded-For');
define('SS_TRUSTED_PROXY_PROTOCOL_HEADER', 'X-Forwarded-Proto');

Я также не мог найти где TRUSTED_PROXY был определен в рамках, поэтому я добавил

define('TRUSTED_PROXY', '1');

также.

Однако форма все еще перенаправляет на / когда проверка не пройдена.

Что здесь происходит? Есть ли другие вещи, которые мне не хватает, чтобы определить LB?

РЕДАКТИРОВАТЬ

Я удалил CloudFront (LB все еще на месте), и теперь он работает, как и ожидалось. Я бы предпочел поставить его обратно, но я не уверен, что является причиной проблемы. Насколько я могу судить, единственное, что нужно переслать, — это файл cookie PHPSESSID, должно ли быть что-то еще?

1

Решение

Для CloudFront вы должны внести в белый список несколько заголовков. Для этого вопроса я считаю, что это было Referer заголовок.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector