2009-07-16 74 views
0

我在驗證servlet和我們實際的jsp之間存在一個奇怪的cookie可見性問題。我們使用servlet來驗證用戶是否是有效的用戶,如果他們是,我們繼續並使用其引用URL向HttpServletResponse添加一個cookie(這樣可以將集成重定向到他們自己的登錄頁面登出)。註銷操作通過相同的servlet,並且cookie被檢索,並且用戶被引導回存儲的cookie url。這一切都有效。但是,在我的網站中,如果我打印出通過pageContext.getRequest()。getCookies()[或通過螢火蟲控制檯]拉出的cookie,我根本找不到存儲的cookie。它幾乎沒有任何痕跡。但是,當您單擊註銷鏈接並將其導回到身份驗證servlet時,會找到Cookie,並相應地重定向。Java Servlet/JSP Cookie Disconnect

問題是,我需要像註銷一樣處理超時操作,但超時檢查在servlet外部,在jsp標記中。由於超時無法找到cookie,因此只使用標準timout頁面,集成客戶不希望看到該頁面。

任何想法這裏發生了什麼?

[ANSWER] 原來是一個路徑問題。我知道我沒有粘貼任何代碼,但是我創建的cookie沒有設置路徑,所以cookie只在servlet目錄中可見。一旦我設置了「/」的路徑,該cookie在整個站點中都可見。

回答

0

事實上,它原來是一個路徑問題。我知道我沒有粘貼任何代碼,但是我創建的cookie沒有設置路徑,所以cookie只在servlet目錄中可見。一旦我設置了「/」的路徑,該cookie在整個站點中都可見。

1

當你說「在我的網站」,這是否意味着你的網站部署在不同的(子)域?默認情況下,Cookie只對其設置的主機可見,這意味着從「www.example.com」設置的cookie對「other.example.com」不可見。您可以通過明確指定cookie域爲兩者共同(例如「example.com」)來解決此問題。

+0

不,它們都在同一個域中。儘管servlet駐留在它自己的目錄中,但jsp頁面是從根 – Gopherkhan 2009-07-16 18:56:48

1

你最近怎麼做這個重定向?

RequestDispatcherforward方法需要請求和響應對象,可能是你已經在使用的對象。這意味着請求對象與您在Servlet中處理的HttpServletRequest對象相同。

+0

提供的,實際上我使用的是HttpServletResponse的sendRedirect(...)。所以我會在驗證和存儲cookie後使用servlet重定向到主站點?我會嘗試一下。 – Gopherkhan 2009-07-16 19:08:00

+0

太棒了。這工作。謝謝。 – Gopherkhan 2009-07-16 19:22:17

+0

但是,即使沒有重定向,轉到任何後續頁面都會丟失cookie ...仍在處理該部分。 – Gopherkhan 2009-07-16 21:58:05