Quiero redirigir todas las solicitudes de http a https usando Jetty (6.1.24). Por alguna razón (mi ignorancia) esto me está eludiendo. Esto es lo que tengo:
<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>
En respuesta obtengo 200 - ok, y el cuerpo es la página sobre http, es decir, la redirección no ocurre.
Respuestas:
Hablando por Jetty 9 ... Así es como puede hacerlo siempre que su conector SSL ya funcione:
Paso 1: asegúrese de que todo pase por SSL agregando esto a su web.xml. Si intenta acceder a un recurso a través de HTTP, esto devolverá un error 403! SECURE
Paso 2: ¡ Haga que Jetty redirija a HTTPS cuando vea un error 403! SECURE agregando esto a su jetty.xml
fuente
Creo que el patrón solo coincide con el URI. Deberías usar algo como:
Ver: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RewriteHandler.html
fuente
Acabo de agregar el documento: http://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Redirecting_http_requests_to_https
fuente
Por lo que puedo decir, esto no es fácil de hacer con ninguna de las reglas / controladores que se envían con Jetty 6.
Las
RedirectPatternRule
coincidencias entarget
cuál es la ruta en el servidor Jetty, y no el URI completo, por lo que su regla nunca coincide.Puedes cambiarlo a:
Sin embargo, eso tiene 2 problemas:
https
solicitudes)location
como se especifica e ignora todo lo que coincida conpattern
)Puedes superar el primer problema con algunos trucos.
Puede ajustarlo
RewriteHandler
en aContextHandler
, y un controlador de contexto le permite especificar de qué conectores manejará las solicitudes de (setConnectorNames
). Por lo tanto, puede usar eso para hacer que la reescritura solo se aplique a las solicitudes en los conectores http.Sin embargo, no puedo pensar en una forma de superar el segundo problema.
Creo que su mejor opción será escribir su propia regla de redireccionamiento para esto. Si no tiene recursos de desarrollo para hacer eso por usted, contácteme (puede encontrar mi dirección de correo electrónico a través de mi blog, que está en mi perfil) y puedo preparar una (bajo la misma licencia que Jetty). Será bastante sencillo escribir una regla que simplemente redirija http a https.
fuente