Quero redirecionar todos os pedidos de http para https usando o Jetty (6.1.24). Por alguma razão (minha ignorância), isso está me iludindo. Isto é o que eu tenho:
<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>
Em resposta, recebo 200 - ok, e o corpo é a página sobre http, ou seja, o redirecionamento não ocorre.
Respostas:
Falando sobre o Jetty 9 ... Veja como você pode fazê-lo, desde que o seu conector SSL já funcione:
Etapa 1: verifique se tudo passa por SSL adicionando isso ao seu web.xml. Se você tentar acessar um recurso por HTTP, isso retornará um erro 403! SECURE
Etapa 2: Faça o Jetty redirecionar para HTTPS quando ocorrer um erro 403! SECURE adicionando-o ao seu jetty.xml
fonte
Eu acho que o padrão está correspondendo apenas ao URI. Você deve usar algo como:
Consulte: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RewriteHandler.html
fonte
Acabei de adicionar o documento: http://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Redirecting_http_requests_to_https
fonte
Até onde eu sei, isso não é fácil de ser feito com nenhuma das regras / manipuladores enviados com o Jetty 6.
As
RedirectPatternRule
correspondências notarget
qual é o caminho no servidor Jetty, e não o URI completo; portanto, sua regra nunca corresponde.Você pode alterá-lo para:
No entanto, isso tem 2 problemas:
https
solicitações)location
o que é especificado e ignora qualquer coisa que corresponda aopattern
)Você pode superar o primeiro problema com alguns truques.
Você pode agrupar o
RewriteHandler
em aContextHandler
, e um manipulador de contexto permite especificar de quais conectores ele manipulará as solicitações de (setConnectorNames
). Portanto, você pode usar isso para fazer com que a reescrita se aplique apenas às solicitações nos conectores http.Não consigo pensar em uma maneira de superar a segunda questão.
Eu acho que sua melhor aposta será escrever sua própria regra de redirecionamento para isso. Se você não tiver recursos de desenvolvimento para fazer isso por você, entre em contato comigo (você pode encontrar meu endereço de e-mail no meu blog, que está no meu perfil) e eu posso preparar um (com a mesma licença do Jetty). Será bastante simples escrever uma regra que simplesmente redirecione http para https.
fonte