分布式项目 cookie共享方案
方案1.手動(dòng)設(shè)置Cookie的Domain和Path(適用于同域或同IP的多項(xiàng)目 或 同NGINX代理的多個(gè)項(xiàng)目)
首先要了解Cookie作用域,這里就用到了cookie的兩個(gè)屬性 domain,path。當(dāng)請(qǐng)求與cookie的域名相同且作用路徑相同的時(shí)候,瀏覽器才會(huì)攜帶cookie才可以實(shí)現(xiàn)cookie共享。domain 這個(gè)屬性可以設(shè)置cookie的作用域名,path可以設(shè)置cookie的作用路徑。cookie丟失時(shí)考慮其域名,路徑,有效期,是否和當(dāng)前請(qǐng)求匹配
現(xiàn)在有A,B兩個(gè)項(xiàng)目,我希望在a項(xiàng)目登錄后在b也能保持登錄狀態(tài)就需要把用戶信息存入cookie,那這時(shí)候b就要獲取a的cookie,首先項(xiàng)目域分別是a.test.com和b.test.com沒有(域名是要給domain賦值用的)所以沒有域名的話去修改下host文件把 a.test.com [a項(xiàng)目ip],b.test.com [b項(xiàng)目ip]
//登錄后把用戶信息寫入cookie,我這里是存進(jìn)去一個(gè)token值這里就當(dāng)做token=user1Cookie user_cookie = new Cookie("token","user1");//設(shè)置cookie的domain這里注意寫的是主域名//(a.test.com,b.test.com的主域名就是.test.com。若有NGINX代理,則可以設(shè)置為NGINX的域名)//寫入這個(gè)參數(shù)之后所有主域名為.test.com的項(xiàng)目都可以調(diào)用這個(gè)cookieuser_cookie.setDomain(".test.com"); //IP也可以//設(shè)置cookie的path?//path這里直接寫 / 表示所有路徑都可以訪問user_cookie.setPath("/");//過期時(shí)間s (默認(rèn)是-1 關(guān)閉瀏覽器失效) user_cookie.setMaxAge(60*60);//HttpServletResponse 返回cookie response.addCookie(user_cookie);
這個(gè)時(shí)候去瀏覽器查看你的cookie你會(huì)發(fā)現(xiàn)展示的domain和path都是你設(shè)置的了。就這樣就可以實(shí)現(xiàn)cookie共享了
這個(gè)方法簡(jiǎn)單但是有一個(gè)弊端 就是你的項(xiàng)目必須是同一個(gè)主域名才可以。
或是Nginx作為主域名代理,欺騙瀏覽器攜帶cookie,nginx再轉(zhuǎn)發(fā)給后端各個(gè)項(xiàng)目。但是無法保證第三方JAR中都這樣設(shè)置Cookie。
經(jīng)測(cè)試SESSIONID的路徑默認(rèn)就是"/",只要域名相同全路徑攜帶,可以直接共享
轉(zhuǎn)載于:https://www.cnblogs.com/sw008/p/11054301.html
總結(jié)
以上是生活随笔為你收集整理的分布式项目 cookie共享方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 147.对链表进行排序
- 下一篇: 安卓基础之读取联系人的姓名和电话