分布式專案 cookie共享方案

2021-10-14 16:33:47 字數 1304 閱讀 3408

手動設定cookie的domain和path(適用於同域或同ip的多專案 或 同nginx**的多個專案)

首先要了解cookie作用域,這裡就用到了cookie的兩個屬性 domain,path。當請求與cookie的網域名稱相同且作用路徑相同的時候,瀏覽器才會攜帶cookie才可以實現cookie共享。domain 這個屬性可以設定cookie的作用網域名稱,path可以設定cookie的作用路徑。cookie丟失時考慮其網域名稱,路徑,有效期,是否和當前請求匹配

現在有a,b兩個專案,我希望在a專案登入後在b也能保持登入狀態就需要把使用者資訊存入cookie,那這時候b就要獲取a的cookie,首先專案域分別是a.test.com和b.test.com沒有(網域名稱是要給domain賦值用的)所以沒有網域名稱的話去修改下host檔案把 a.test.com [a專案ip],b.test.com [b專案ip]

//登入後把使用者資訊寫入cookie,我這裡是存進去乙個token值這裡就當做token=user1

cookie user_cookie = new cookie(

"token","user1");

//設定cookie的domain這裡注意寫的是主網域名稱

//(a.test.com,b.test.com的主網域名稱就是.test.com。若有nginx**,則可以設定為nginx的網域名稱)

//寫入這個引數之後所有主網域名稱為.test.com的專案都可以呼叫這個cookie

user_cookie.setdomain(

".test.com"

); //ip也可以

//設定cookie的path

//path這裡直接寫 / 表示所有路徑都可以訪問

user_cookie.setpath(

"/")

; //過期時間s (預設是-1 關閉瀏覽器失效)

user_cookie.setmaxage(60*60)

; //httpservletresponse 返回cookie

response.addcookie(user_cookie)

;

這個時候去瀏覽器檢視你的cookie你會發現展示的domain和path都是你設定的了。就這樣就可以實現cookie共享了

這個方法簡單但是有乙個弊端 就是你的專案必須是同乙個主網域名稱才可以。

或是nginx作為主網域名稱**,欺騙瀏覽器攜帶cookie,nginx再**給後端各個專案。但是無法保證第三方jar中都這樣設定cookie。

經測試sessionid的路徑預設就是"/",只要網域名稱相同全路徑攜帶,可以直接共享

分布式專案 cookie共享方案

方案1.手動設定cookie的domain和path 適用於同域或同ip的多專案 或 同nginx 的多個專案 首先要了解cookie作用域,這裡就用到了cookie的兩個屬性domain,path。當請求與cookie的網域名稱相同且作用路徑相同的時候,瀏覽器才會攜帶cookie才可以實現cook...

分布式專案 cookie共享方案

cookie域 setdomain 設定cookie域,指的是訪問某個域的時候,才會帶入cookie,訪問其他域,不會帶入cookie。缺省會禁止該設定,因為安全性較差,如,訪問baidu.com,baidu.com寫乙個域是google.com的cookie,那麼訪問google.com的時候會帶...

分布式專案 cookie共享方案

方案1.手動設定cookie的domain和path 適用於同域或同ip的多專案 或 同nginx 的多個專案 首先要了解cookie作用域,這裡就用到了cookie的兩個屬性domain,path。當請求與cookie的網域名稱相同且作用路徑相同的時候,瀏覽器才會攜帶cookie才可以實現cook...