0

私のプロジェクトでday CQを使用してフィルターを開発しているときに問題に直面しています。私のコードは requestDispatcher の forward メソッドで動作しています。しかし、response.sendRedirect() では機能しません。

if (servletRequest instanceof SlingHttpServletRequest) {
   HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
   HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
   String uri = httpRequest.getRequestURI();

   if(uri.startsWith("/content")){
    Cookie[] cookies = httpRequest.getCookies();
    boolean found = false;
        for (Cookie cookie : cookies) {
        log.info("Cookies in filter: " + cookie.getName());
        if("LtpaToken2".equals(cookie.getName())){
            log.info("LTPA token found ");
            found = true;
            break;
        }
    }
    if(found){
        filterChain.doFilter(servletRequest, servletResponse);
    }
    else{
        httpResponse.sendRedirect("http://www.google.com");
    }           
  }else{
        filterChain.doFilter(servletRequest, servletResponse);
  }

 log.info("Message URL ::"+httpRequest.getRequestURL().toString());
 log.info("URI ::"+uri);
}

だから私の問題を解決してください、それは非常にありがたいです。

よろしく Narsi p

4

1 に答える 1

0

Spring についてはわかりませんが、JEE では、フィルターでそのような応答を実際に操作することはできません。またはIllegalStateExceptionを使用すると が得られます。sendRedirectsendError

私のアドバイスは、これらの抽象化を決して使用しないことです。やりたいことは、応答ヘッダーを指定して要求を閉じることです。

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", ""http://www.google.com");
return;
于 2013-12-16T14:05:30.757 に答える