1. 程式人生 > >登出登入後點擊瀏覽器頁面依然能後退的解決辦法

登出登入後點擊瀏覽器頁面依然能後退的解決辦法

在進行jsp開發的時候,經常會遇到這樣的需求,就是進行登出後返回到登入頁面但是點選瀏覽器的後退按鈕依然能夠回到登出前的頁面,這種問題如何解決呢?

1.點選瀏覽器按鈕的時候是不會通過session訪問的因為這是瀏覽器進行的cache快取在起作用,所以我們需要在jsp頁面設定cache的失效時間和儲存狀況,這時候

在登出前的jsp頁面加上網上通常提到的三段程式碼即可:

response.setHeader("pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setDateHeader("Cache-Control","No-Store");

以上程式碼都寫在<%%>之中。其中用意為:

禁用IE快取
HTTP訊息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。

普通報頭中的Cache-Control用於指定快取指令,快取指令是單向的(響應中出現的快取指令在請求中未必會出現),且是獨立的(一個訊息的快取指令不會影響另一個訊息處理的快取機制),HTTP1.0使用的類似的報頭域為Pragma。
請求時的快取指令包括:no-cache(用於指示請示或響應訊息不能快取)、no-store、max-age、max-stale、min-fresh、only-if-cached;
響應時的快取指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。
例:為了指示IE瀏覽器(客戶端)不要快取頁面,伺服器端的jsp程式可以編寫如下:
response.setHeader(“Cache-Control”, “no-cache”);
//response.setHeader(“Pragma”, “no-cache”);作用相當於上行程式碼,通常兩者合用

Expires實體報頭域給出響應過期的日期和時間。為了讓代理伺服器或瀏覽器在一段時間以後更新快取中(再次訪問曾訪問過的頁面時,直接從快取中載入,縮短響應時間和降低伺服器負載)的頁面,我們可以使用Expires實體報頭域指定頁面過期時間。例:Expires:Thu,15 Sep 2006 16:23:12 GMT
HTTP1.1的客戶端和快取必須將其他非法的日期格式(包括0)看作已經過期。如:為了讓瀏覽器不要快取頁面,也可以利用Expires實體報關域,設定為0,jsp程式如下:
response.setDateHeader(“Expires”, “0”);
2.待續