當瀏覽器禁用Cookies時,基於Cookie的會話跟蹤機制就會失效,解決辦法是利用URL重寫機制跟蹤用戶會話。
在使用URL重寫機制的時候需要注意,爲了保證會話跟蹤的正確性,所有的鏈接和重定向語句中的URL都需要調用encodeURL()或encodeRedirectURL()方法進行編碼。另外,由於附加在URL中的SessionID是動態產生的,對於每一個用戶都是不同的,所欲對於靜態頁面的相互跳轉,URL重寫機制就無能爲力了,但是,我們也可以通過將靜態頁面轉換爲動態頁面來解決這個問題。
在web開發程序的時候,如何去判斷客戶端是否禁用了Cookie,從而決定是否採用URL重寫的機制去跟蹤用戶的會話。實際上,客戶端時候禁用了Cookie,不需要我們去判斷的,Servlet容器會幫我們做這件事情。我們在開發Web應用程序的時候,只需要對所有的鏈接和重定向語句中的URL都調用encodeURL()和encodeRedirectURL()方法進行編碼就可以了。
out.println("<form method=post action=loginchk>");
//<span style="white-space:pre"> </span> 這裏是鏈接,所以調用encodeURL()方法
// out.println("<form method=post action=" + res.encodeURL("loginchk") + ">");
<span style="white-space:pre"> </span>res.sendRedirect("s_login");
//<span style="white-space:pre"> </span> 這裏是重定向語句,所以調用encodeRedirectURL()方法
// res.sendRedirect(res.encodeRedirectURL("s_login"));
如果瀏覽器禁用了Cookie,不管驗證是否正確都不會跳轉,仍停留在當前登錄界面。