Я хочу перенаправить все запросы для http на https с помощью Jetty (6.1.24). По какой-то причине (мое невежество) это ускользает от меня. Вот что у меня есть:
<New id="redirect" class="org.mortbay.jetty.handler.rewrite.RedirectPatternRule">
<Set name="pattern">http://foobar.com/*</Set>
<Set name="location">https://foobar.com</Set>
</New>
В ответ я получаю 200 - хорошо, и тело является страницей по http, т.е. перенаправление не происходит.
Ответы:
Если говорить о Jetty 9 ... Вот как вы можете это сделать, если ваш SSL-коннектор уже работает:
Шаг 1: Убедитесь, что все проходит через SSL, добавив это в ваш web.xml. Если вы попытаетесь получить доступ к ресурсу через HTTP, это вернет ошибку 403! SECURE
Шаг 2: Сделайте так, чтобы Jetty перенаправляла на HTTPS, когда обнаружит ошибку 403! SECURE, добавив это в ваш jetty.xml
источник
Я думаю, что шаблон соответствует только URI. Вы должны использовать что-то вроде:
См. Http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RewriteHandler.html.
источник
Я только что добавил документ: http://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Redirecting_http_requests_to_https
источник
Насколько я могу судить, это нелегко сделать с любым из правил / обработчиков, которые поставляются с Jetty 6.
Эти
RedirectPatternRule
спички наtarget
которых путь на сервере Jetty, а не полный URI, поэтому ваше правило никогда не соответствие.Вы можете изменить это на:
Тем не менее, это имеет 2 проблемы:
https
запросы)location
соответствии с указанным и игнорирует все, что соответствуетpattern
)Вы можете преодолеть первую проблему с помощью некоторых хитростей.
Вы можете заключить
RewriteHandler
вContextHandler
, и обработчик контекста позволяет вам указать, какие соединители он будет обрабатывать запросы от (setConnectorNames
). Таким образом, вы можете использовать это, чтобы перезапись применялась только к запросам на коннекторе (ах) http.Я не могу придумать, как преодолеть вторую проблему.
Я думаю, что вам лучше всего написать собственное правило перенаправления для этого. Если у вас нет ресурсов для разработки, чтобы сделать это для вас, тогда свяжитесь со мной (вы можете найти мой адрес электронной почты в моем блоге, который находится в моем профиле), и я могу записать его (под той же лицензией, что и Jetty). Будет довольно просто написать правило, которое просто перенаправляет http на https.
источник