2012-02-22 13 views
3

https://localhost:8181で動作するページがいくつかあり、http://localhost:8080.Iで実行されるページはhttpsからhttpにダウンシフトしたいと思うページはほとんどありません。 httpsからhttp、httpからhttpsへのリダイレクトを管理するフィルタを使用します。フィルタを使用してHTTPSからHTTPにリダイレクト

私は[1] [1]

[WebアプリケーションにHTTPSからHTTPにシフトダウンする方法]このリンクに見えた:https://blogs.oracle.com/jluehe/entry/how_to_downshift_from_httpsが、使用されるフィルタsがbroken..Iているリンクはありませんフィルター内で行われることになっているものについての明確なアイデア...

私のweb.xmlに

`

<filter> 
     <filter-name>Non SSL port</filter-name> 
     <filter-class>SSLFilter</filter-class> 
     <init-param> 
     <param-name>httpPort</param-name> 
     <param-value>8080</param-value> 
    </init-param> 
    </filter> 

    <filter-mapping> 
    <filter-name>NON SSL pages</filter-name>  
    <url-pattern>/pages/success.xhtml</url-pattern> 
    <url-pattern>/pages/failure.xhtml</url-pattern> 
    <url-pattern>/pages/about.xhtml</url-pattern> 
    </filter-mapping>` 

いくつかのいずれかをするように、フィルタの内側に何をすべきか私を導くことができますhttpsからhttpへの移行はスムーズです。

私はGlassfish 3.1.1とJSFを使用しています。

+0

ブログページは、旧サンのページのほとんどがオラクルに移行しました。彼らはそれにリンクを修正していないように見えます。リンクで 'sun'を' oracle'に置き換えてみてください。少なくとも 'sample.war'のために働いていました。コメントを残して、修正することができます。 – TPete

答えて

5
import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class HttpsRedirectFilter implements Filter { 

public void doFilter(ServletRequest request, ServletResponse response, 
         FilterChain chain) throws IOException, ServletException { 

    if(request instanceof HttpServletRequest 
     && response instanceof HttpServletResponse) { 
     HttpServletRequest httpReq = (HttpServletRequest) request; 
     String redirectTarget = httpReq.getRequestURL().toString(); 
     redirectTarget = redirectTarget.replaceFirst("https", "http") 
     redirectTarget = redirectTarget.replaceFirst(":8443", ":8080"); 
     redirectTarget = redirectTarget.replaceFirst("home", "home.do"); 
     if(request.isSecure()) {     
      ((HttpServletResponse)response).sendRedirect(redirectTarget); 
     } else { 
      chain.doFilter(request, response); 
     } 
    } 
} 
} 
関連する問題