2012-06-07 2 views
0

세션에 문제가 있습니다. 내가 로그 아웃 할 때 세션은 가 종료되었지만 브라우저가 뒤로 버튼을 누르면 이전 페이지가 나타납니다. 나는 JSP로 서블릿 기술을 사용하고 로그 아웃 내 코드는 문제입니다 아무도 말해 줄 수자바를 사용하여 브라우저 캐시를 지우는 방법

    request.getSession().invalidate(); 
     response.setHeader("Cache-Control","no-cache"); 
     response.setDateHeader("Expires", 0); 
     response.setHeader("Pragma","no-cache"); 
     response.sendRedirect("home.jsp"); 

아래에 주어진 어떤이 문제에 대한 해결책이 될 것인가?

답변

0
<script> 
    history.forward(); 
</script> 

로그 아웃하기 전에 페이지에 자바 스크립트 추가 및 호출. 그것은 당신의 뒤로 버튼 문제를 해결할 태그

onLoad="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload')" 

에 코드 아래에 추가합니다.

+0

는 이미이 사용하는 거라고,하지만 난 작동하지 않았다. – user1407310

+0

적용하려면 페이지를 새로 고침해야합니다. 일반적으로 세션은 브라우저 창이 닫히면 끝납니다. –

+0

페이지를 새로 고친 후에도 작동하지 않습니다. – user1407310

1

로그 아웃 페이지에서만 캐시 헤더를 설정합니까? 그렇다면 페이지를 가져온 페이지에 캐시되지 않은 페이지가 있으므로 각 페이지에 붙여 넣어야합니다.

0

Wirte 다음과 같이 코드,

 //... 
    response.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server 
    response.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance 
    response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale" 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility 

    //can check userId or something likes this.In this sample, i checked with userName. 
    String userName = (String) session.getAttribute("User"); 
    if (null == userName) { 
     request.setAttribute("Error", "Session has ended. Please login."); 
     RequestDispatcher rd = request.getRequestDispatcher("login.jsp"); 
     rd.forward(request, response); 
    } 
관련 문제