У меня есть веб-приложение, которое находится на балансировщике нагрузки. Соединения с балансировщиком нагрузки безопасны с помощью https, и мой балансировщик нагрузки связывается с моим веб-сервером с помощью http. Это достаточно безопасно для моего случая использования, поскольку веб-сервер может принимать трафик только от подсистемы балансировки нагрузки, которая уже аутентифицирована.
Моя проблема в том, что у меня есть несколько форм, использующих FOSMessageBundle, которые создают маршруты, используя текущую схему. Веб-сервер считает, что входящие соединения используют http, поэтому маршруты создаются с помощью http. Теперь это становится угрозой безопасности, и я не могу отправить форму в большинстве браузеров из-за несовместимых схем.
Вот строка из файла ветки, которую мне нужно переопределить и исправить:
{% set formAction %}{{ url('fos_message_thread_undelete', {'threadId': thread.id}) }}{% endset %}
Если мне потребуется https (используя метод из Symfony Docs) для указанного выше маршрута fos сгенерированный маршрут правильный, но при отправке происходит цикл перенаправления, поскольку веб-сервер не может принять https, а мой балансировщик нагрузки автоматически устанавливает и перенаправляет любой http на https.
Я использовал быстрое и грязное решение, чтобы вручную ввести https в моем маршруте и использовать функцию пути для создания остальной части URL, но это не правильное кодирование. Я проверил это, и форма отправляется с https на балансировщик нагрузки, который затем отправляет его на веб-сервер с http.
Есть ли способ создать URL-адрес в Symfony, который всегда генерируется с помощью https, но не требует https?
Я просматривал документы и нашел URL, относящиеся к схеме это, кажется, правильное направление, но документация подразумевает его для доступа к внешним файлам, а не для маршрутов форм. Кто-нибудь знает, уместно ли использовать это в моей ситуации:
{{ url('fos_message_thread_undelete', {'threadId': thread.id}, true) }}
Вот некоторые другие вопросы, которые несколько похожи, но ни один не дал ответа на то, что я пытаюсь выполнить:
«Require_channel: https» вызывает ошибку 310, слишком много перенаправлений
Принудительный HTTPS с Symfony
Я использую Apache 2.4 и Symfony 2.6.
Простой ответ на мой вопрос о создании https в ветке, но не требующий https для отправки формы, заключается в использовании URL-адресов, относящихся к схеме:
{{schema_parameter}}{{ url('fos_message_thread_undelete', {'threadId': thread.id}, true) }}
Других решений пока нет …