2012-05-28 97 views
0

JSP1鏈接到JSP2。request.getHeader(「referer」),比後退按鈕重新加載頁面

JSP2調用servlet,它做一些事情,結尾是:

response.sendRedirect(request.getHeader("referer")); 
return; 

在這一點上,我回JSP2。 問題是,從那裏按下瀏覽器後退按鈕,頁面只是重新加載自己,而不是回到JSP1。 這是正確的,因爲sendRedirect將一個條目添加到歷史記錄中。

但我想回到JSP1。 任何提示?

+0

? –

回答

5

出於各種敏感原因,您不應該依賴控制器操作中的引用標頭。你已經發現至少有一個。這個頭並不總是由客戶端發送,或者它的值可能並不真正代表真正的引用者。某些瀏覽器,代理甚至防病毒配置可能會隱藏,更改甚至模糊引用標頭。爲了統計目的,最多使用它。

與此邏輯(驗證略)

response.sendRedirect(request.getParameter("from")); 

或者,更好的,如果它總是一個和同一個JSP

而是通過from作爲代替的請求參數,

<input type="hidden" name="from" value="${pageContext.request.requestURI}" /> 

基於其它請求參數,只需在服務器端完全硬編碼/配置它。

相關問題