2017-02-23 5 views
0

https 연결을 사용하여 Java Struts v.1 및 WebSphere v.8.5를 실행중인 레거시 애플리케이션을 만들고 있습니다. 나는 자사의 보안과 관련하여 애플리케이션을 컴플라이언스에 이르게하려고 노력 중이다. 우리는이 응용 프로그램과 함께 수행해야하는 작업 중 하나는 모든 기존 페이지에 방지 캐싱 응답 헤더를 추가 할 수 있습니다 : 헤더를 가능하게함으로써 우리가보고되어 있지만, 내가 헤더를 추가하고 관리해야캐시 제어 헤더로 인해 뒤로 버튼과 관련된 문제가 발생합니다.

Cache-Control: no-cache, no-store 
Expires: 0 
Pragma: no-cache 

그 뒤로 버튼 HTTP POST 요청을 사용하는 페이지에서 더 이상 제대로 작동하지 않습니다.

대부분의 원인

웹 페이지가

을 만료 :이 웹 페이지의 로컬 복사본 •

가 밖으로

IE : 우리는 각각의 브라우저에 표시되는 다음 페이지를 얻고있다 웹 사이트에서는 날짜를 다시 다운로드해야합니다.

시도해 볼 항목 : 툴바에서 새로 고침 버튼을 클릭하여 페이지를 다시로드하십시오. 새로 고침 후 특정 웹 페이지 ( )로 다시 이동하거나 정보를 다시 입력해야 할 수 있습니다.

크롬 :

확인 양식 다시 제출

이 웹 페이지를 제대로 표시하려면 이전에 입력 한 데이터가 필요합니다. 이 데이터를 다시 보낼 수 있지만 그렇게하면이 페이지에서 이전에 수행 한 작업을 반복합니다. 페이지를로드하는 데 필요한 데이터를 다시 제출하려면 다시로드 단추를 누르십시오.

한이 화면은 우리가 우리가 원래 원하는 페이지를 탐색하는 표시 한 후 페이지를 새로 고치는 경우 ERR_CACHE_MISS.

이 문제를 들여다 보면 다시 버튼을 클릭 할 때

cache-control : no-cache, no-store 

헤더 오류 페이지에 대해 비난하는 것 같다.

따라서 내 문제는 사용자가 브라우저의 오류 화면을 보지 않고 사용자가 뒤로 버튼을 사용할 수 있도록 헤더를 유지하거나 뭔가를 추가하는 것과 관련하여 문제에 대한 해결 방법이있는 경우 페이지. 아니면 POST 호출을 사용하는 페이지를 캐시 제어 헤더가 포함되지 않도록 제외해야합니까?

몇 가지 참고 사항 :

-Meta 태그는이 보안 취약점을 교정하기 위해 충분하지 간주됩니다.다른 캐시 제어에 헤더를 추가하는 시도하지만, 그들 중 누구도이 다시 문제를 해결에서 근무하지 않은 -I HTML Meta Tags and HTTP Headers

:

must-revalidate 
age 
post & pre-checks 
etc... 

나는 어떤 통찰력과 도움을 주셔서 감사합니다. 미리 감사드립니다.

답변

0

동일한 문제가있는 사람은 다음과 같은 오류가 발생합니다.

서버 측 렌더링 페이지에 대해 Post/Redirect/Get (PRG) 모델을 구현했습니다. 이 기능은 대부분의 현대 프레임 워크에서 찾을 수 있습니다. 간단한 Google 검색은 프레임 워크에서이 작업을 수행하는 방법을 제공합니다.

페이지 이외에도 PRG 모델을 구현하고 싶지 않았고 뒤로 버튼 이벤트를 제어하려고했습니다. 나는 JQuery와 함께 다음 스크립트를 사용하여 끝났다.

참고 :이 방법은 귀하의 재량에 따라 최신 브라우저에서만 작동합니다.

//Import JQuery 
<script src="jquery-1.11.0.min.js"></script> 

//Add this to your JS Logic for the page you want to change 
<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
    if (window.history && window.history.pushState) { 
     $(window).on('popstate', function() { 
     var hashLocation = location.hash; 
     var hashSplit = hashLocation.split("#!/"); 
     var hashName = hashSplit[1]; 

     if (hashName !== '') { 
      var hash = window.location.hash; 
      if (hash === '') { 
      document.location.href = '/Your/Redirection/Here'; 
      } 
     } 
     }); 

    window.history.pushState('forward', null, '#SomeIDYouAreNotUsing'); 
    } 

}); 
</script>