Je souhaite rediriger toutes les demandes de http vers https à l'aide de Jetty (6.1.24). Pour une raison (mon ignorance), cela m'échappe. Voici ce que j'ai:
<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 réponse, j'obtiens 200 - ok, et le corps est la page sur http, c'est-à-dire que la redirection ne se produit pas.
Réponses:
Parlant de Jetty 9 ... Voici comment vous pouvez le faire à condition que votre connecteur SSL fonctionne déjà:
Étape 1: Assurez-vous que tout passe par SSL en l'ajoutant à votre web.xml. Si vous essayez d'accéder à une ressource via HTTP, cela renverra une erreur 403! SECURE
Étape 2: faites rediriger Jetty vers HTTPS lorsqu'il voit une erreur 403! SECURE en l'ajoutant à votre jetty.xml
la source
Je pense que le modèle ne correspond qu'à l'URI. Vous devez utiliser quelque chose comme:
Voir: http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/rewrite/handler/RewriteHandler.html
la source
Je viens d'ajouter le document: http://wiki.eclipse.org/Jetty/Howto/Configure_SSL#Redirecting_http_requests_to_https
la source
Pour autant que je sache, ce n'est pas facile à faire avec les règles / gestionnaires fournis avec Jetty 6.
Les
RedirectPatternRule
correspondances sur letarget
qui est le chemin d'accès sur le serveur Jetty, et non l'URI complet, donc votre règle ne correspond jamais.Vous pouvez le changer en:
Cependant, cela pose 2 problèmes:
https
demandes)location
comme il est spécifié et ignore tout ce qui a été trouvé par lepattern
)Vous pouvez surmonter le premier problème avec une supercherie.
Vous pouvez envelopper le
RewriteHandler
dans unContextHandler
, et un gestionnaire de contexte vous permet de spécifier les connecteurs dont il traitera les demandes de (setConnectorNames
). Vous pouvez donc l'utiliser pour que la réécriture ne s'applique qu'aux requêtes sur le ou les connecteurs http.Je ne peux pas penser à un moyen de surmonter le deuxième problème.
Je pense que votre meilleur pari sera d'écrire votre propre règle de redirection pour cela. Si vous n'avez pas de ressources de développement pour le faire pour vous, alors contactez-moi (vous pouvez trouver mon adresse e-mail via mon blog, qui est dans mon profil) et je peux en concocter une (sous la même licence que Jetty). Il sera assez simple d'écrire une règle qui redirige simplement http vers https.
la source