2010-12-15 25 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並重定向。