как перенаправить на другой порт в playframework - PullRequest
2 голосов
/ 21 марта 2011

Может кто-нибудь сказать мне, как перенаправить на модуль, используя другой порт?пример: перенаправление с http://localhost:9000 на https://localhost:9443/login

без изменения портов, я просто использовал бы @{Secure.login()} в контроллере, но я не мог найти способ перенаправить на другой порт ..

Ответы [ 2 ]

3 голосов
/ 21 марта 2011

Способ, которым вы должны это сделать, для вашего примера - метод .secure ().Он был добавлен в Play 1.0.3.2.

Таким образом, он будет выглядеть как

@{Secure.login().secure()}

Это специальный метод для объекта маршрутизатора, который изменяет URL-адрес с HTTP на HTTPS.Хотя в прошлый раз, когда я проверял, порт не изменился.Я поднял ошибку, но не уверен, что она еще не исправлена ​​в основной ветке 1.2 (https://github.com/playframework/play/blob/master/framework/src/play/mvc/Router.java).

Причина этого в том, что play ожидает, что HTTP-сервер будет находиться напротив Play в производственной средеи обрабатывает HTTPS для вас, и передает через Play как простой HTTP-запрос. Цель .secure() состоит в том, чтобы указать URL-адрес переключиться на HTTPS, но все же пройти через тот же домен.

Iне думайте, что есть много альтернатив (и ни одной, которые бы были хорошими и простыми).

  • Вы можете взять исходный код Play и изменить файл Router.java, чтобы он также изменился.номер порта (в безопасном методе).

  • Или вы можете написать FastTag, который имитирует Router.reverse (фактически то, что делает символ @), но замените номер порта набезопасный.

1 голос
/ 21 марта 2011

Как объяснил codemwnci, ​​в prod Play обычно находится за передним прокси-сервером, который управляет всеми проблемами защищенного канала и который также может использоваться для балансировки.
@ {Secure.login (). Secure ()} должен работать, но он только меняет http на https.
Кроме того, я бы добавил немой комок, который можно использовать в контроллере:

redirect("http://www.zenexity.fr:9876");

;)

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