2010-12-15 22 views
0

我想在jsp中将我的页面http://重定向到https://http转换为https转到无限循环

我对我有一些代码,但它给出了一些问题。

<% 

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"); 

} 

%> 

它给出错误页面为“无限循环”。

+0

使用的isSecure(),以确定其是否使用https http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/ServletRequest.html#isSecure () – Vjy 2010-12-15 15:01:43

+0

使用fiddler2或类似方法捕获实际的响应并将其发布到此处。代码看起来不错 - 它是你正在运行的实际代码吗? – 2010-12-15 15:01:59

回答

5

使用request.isSecure(),以确定其http://https://

这种转变是否是更适合在FilterServlet,而不是JSP

0

你没有提到很多关于你的环境,但这里的其他东西保持心神。

除了上面提到的org.life.java之外,如果你在应用服务器前面有一个反向代理(想想Apache或者Pound在Tomcat,Glassfish等之前),那么有可能SSL请求将在代理处终止,并且传递到容器/应用程序服务器的请求只是HTTP。在这种情况下,您通常希望代理服务器在请求上设置一个标头,以便Java端可以确定它是一个安全请求。

不这样做会导致无限的重定向,因为Java端会一直检测到它是HTTP并重定向。