2010-08-23 54 views
8

我已經使用了代碼「request.getHeader(」Referer「);」代碼似乎工作正常。但最近我發現它在IE中不起作用。 IE被拋出null。我現在對如何前進毫無頭緒。有沒有其他的「Referer」頭可以獲得上一個鏈接並在所有瀏覽器中正常工作?從前面的鏈接設置自定義標題對我來說不是一個可行的選擇。所以有人請幫我解決這個問題。 謝謝。「Referer」的替代標題

+2

標籤jsp建議您嘗試訪問jsp文件中的標頭。你不應該那樣做。 Java處理屬於控制器,不屬於視圖組件。 – 2010-08-23 10:03:36

+0

那麼在這種情況下,最好的方法是什麼?我需要添加用戶的最後登錄時間。 – 2010-08-23 10:19:42

回答

10

「Referer」標題條目是可選的。你不能依靠它存在。沒有跨瀏覽器的方式來獲取上一個鏈接,因爲這取決於用戶設置和代理配置(即系統管理員認爲他們應該讓你看到什麼)。

你必須找到一種沒有這些信息的生活方式。

+0

如果是這樣的話,有什麼辦法讓我在IE中獲得以前的鏈接? – 2010-08-23 09:17:48

+4

我不認爲這是特定於IE的。大多數瀏覽器允許你停用refer(r)er標題,如果你手動輸入一個url到地址欄中,也不會有引用者。你不能依賴引薦者信息。 – 2010-08-23 10:01:42

7

目前尚不清楚您需要什麼,但我懷疑您需要它能夠在某個操作完成後返回同一網站的某個「初始頁面」。然後,您的最佳選擇是將請求URI作爲請求參數傳遞。例如。一個登錄鏈接:

<a href="/login?from=${pageContext.request.requestURI}">login</a> 

在登錄表單,保持它作爲窗體的隱藏輸入值的下一個請求:

<input type="hidden" name="from" value="${param.from}"> 

在登錄操作方法,只是重定向到URL完成後那個行動。

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

如果這是不是你要找什麼,那麼你真的應該闡述你的問題更要問如何實現一個功能性需求,而不是詢問如何實現(錯誤)的解決方案。

依賴引用者上的任何業務邏輯流程從一開始就是一個糟糕的主意。您的第一個Web開發者課程應該是:最終用戶擁有完整控制他/他通過HTTP請求發送的內容。你不應該依賴所有這些信息,更不要說100%正確。