2010-12-15 100 views
0

Je veux rediriger ma page http:// à https:// en jsp.http convertit en https allant à la boucle infinie

J'ai du code avec moi, mais il y a des problèmes.

<% 

String req_protocol = request.getProtocol().toLowerCase(); 

String convertHttps = req_protocol.substring(0, req_protocol.indexOf("/")).toLowerCase(); 

if(convertHttps.equals("http")){ 

    response.sendRedirect("https://xyz.com/signup/signup.jsp"); 

} 

%> 

il donne une page d'erreur en tant que "boucle infinie".

+0

Utilisez isSecure() pour déterminer si elle utilise https http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#isSecure() – Vjy

+0

Utilisez fiddler2 ou similaire pour capturer la réponse réelle et l'afficher ici. Le code semble OK - est-ce le code que vous utilisez? –

Répondre

5

Utilisez request.isSecure() pour déterminer si son http:// ou https://

Cette transition est mieux adaptée à Filter ou Servlet plutôt que jsp

0

Vous n'avez pas parlé beaucoup au sujet de votre environnement, mais voici autre chose à garder à esprit. En plus de ce que org.life.java a mentionné, si vous avez un proxy inverse devant votre serveur d'application (pensez Apache ou Pound devant Tomcat, Glassfish, etc.), alors il est possible que SSL La requête est terminée au niveau du proxy et la requête transmise au conteneur/serveur d'application est simplement HTTP. Dans ce cas, vous souhaiterez généralement que le serveur proxy définisse un en-tête sur la demande afin que le côté Java puisse déterminer qu'il s'agit d'une requête sécurisée.

Si vous ne le faites pas, cela entraînera une redirection infinie, car le côté Java détectera toujours qu'il s'agit de HTTP et de redirection.