在作一個javaweb項目的時候,碰到了一個session跨域不共享問題。折騰了一個下午沒找到問題所在,今天早上在一個高人的指點下終於解決了問題,寫這篇博客給本身及javaweb的初學者,防止之後再次踩坑。java
我要作的是一個保存用戶信息到session中,而後將用戶信息顯示在登陸成功頁面及返回的首頁中。代碼截圖以下:web
UserServlet中登陸功能的代碼: 跨域
須要返回的首頁的核心代碼: 服務器
head.jsp頁面改錯以前的代碼就不截圖了,我在這裏給你們說明一下。我在這個頁面設置了一個base標籤,這個base標籤的路徑是basePath絕對路徑,所謂絕對路徑就是 協議名://服務器地址:端口號/工程路徑 ,然而請求轉發跳轉的登陸成功頁面用的web下的絕對路徑, 這就形成了session再也不同一個域名下,致使session保存的數據不共享,也就致使了登陸成功的頁面可以顯示保存的用戶信息,而返回的首頁不能顯示session保存的信息。session
因此須要作的就是更改basePath爲web目錄下的相對路徑,代碼以下: jsp
這樣兩個頁面的路徑都是同一個域名下的了,session數據就能夠共享,兩個頁面都能顯示session保存的用戶有信息。cdn
另外查資料發現作一些其餘配置能夠實現session不在同域下的數據共享,因爲我是web初學者,這裏暫不討論這種作法。我剛剛接觸session,理解不免有些不足和錯誤,但願你們批評指正。blog