簡體   English   中英

如何禁止在struts2中緩存?

[英]How to disallow caching in struts2?

在我的Web應用程序中,當用戶注銷時,他應該無權訪問他登錄時先前查看過的頁面。但是,由於瀏覽器具有緩存功能,因此他可以在單擊“后退”按鈕時查看這些頁面。

我定義了一個攔截器來處理此問題:

public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub

        final ActionContext context = invocation.getInvocationContext();
        HttpServletResponse response = (HttpServletResponse)context.get(StrutsStatics.HTTP_RESPONSE);
        if(response!=null){
            response.setHeader("Cache-control", "no-cache, no-store");
            response.setHeader("Pragme", "no-cache");
            response.setHeader("Expires", "-1");

        }

        return invocation.invoke();
    }

並在struts.xml

   <interceptors>

   <interceptor name="cachingHeadersInterceptor" class="com.prosonsulto.interceptor.CachingHeadersInterceptor"/>
   <interceptor-stack name="defaultSecurityStack">
   <interceptor-ref name="defaultStack"/>
   <interceptor-ref name="cachingHeqadersInterceptor"/>
   </interceptor-stack>

   </interceptors>

發生的事情是,添加此代碼后,運行應用程序時出現404錯誤。

我嘗試在頁面中添加響應頭:

<%response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", -1);
response.setHeader("Pragma", "no-cache");
%>

但是必須將它一個接一個地添加到所有頁面上是很麻煩的。 另外,用戶始終可以重新提交表單並再次訪問這些頁面,而無需實際輸入其登錄憑據。

理想情況下,我應該怎么做才能防止瀏覽器緩存?

更改此代碼

response.setHeader("Pragme", "no-cache");

response.setHeader("Pragma", "no-cache");

因為您的代碼中有錯誤,所以您無法應用此攔截器,在修復該錯誤之后,您可以使用它來防止緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM