1.不同域名之間cookies跨域問題(單點登陸)
在做項目規劃的時候沒有注意cookies共享;
前後台項目需要共享用户登陸狀態發現不同域名下cookies不能共享
cookies又個domain屬性;給cookies
export function cookiesSet(name, value) {
return Cookies.set(name, value, { domain: '域名.com', path: '/' })
}
1、Cookie的屬性
屬性名 描述
name Cookie的名稱,Cookie一旦創建,名稱便不可更改
value Cookie的值,如果值為Unicode字符,需要為字符編碼。如果為二進制數據,則需要使用BASE64編碼
maxAge Cookie失效的時間,單位秒。如果為整數,則該Cookie在maxAge秒後失效。如果為負數,該Cookie為臨時Cookie,關閉瀏覽器即失效,瀏覽器也不會以任何形式保存該Cookie。如果為0,表示刪除該Cookie。默認為-1。
secure 該Cookie是否僅被使用安全協議傳輸。安全協議。安全協議有HTTPS,SSL等,在網絡上傳輸數據之前先將數據加密。默認為false。
path Cookie的使用路徑。如果設置為“/sessionWeb/”,則只有contextPath為“/sessionWeb”的程序可以訪問該Cookie。如果設置為“/”,則本域名下contextPath都可以訪問該Cookie。注意最後一個字符必須為“/”。
domain 可以訪問該Cookie的域名。如果設置為“.google.com”,則所有以“google.com”結尾的域名都可以訪問該Cookie。注意第一個字符必須為“.”。
comment 該Cookie的用處説明,瀏覽器顯示Cookie信息的時候顯示該説明。
version Cookie使用的版本號。0表示遵循Netscape的Cookie規範,1表示遵循W3C的RFC 2109規範
例如:
document.cookie = "username=1XXXXXX;path=/;domain=.yXXXXX.com"
2.所謂的單點登錄
是指用户在一個站點如www.yxxx.com登錄後切換到另一個站點console.yxxx.com時也自動 被console的Server判斷為已經登錄,反過來,只要用户在console.yxxx.com登出後,切換到 www.yxxxx.com時後www的Server也會判斷到這一用户已經登出。
3.Cookie的Domain屬性
我們重點説一下這個Domain屬性。一般在實現單點登錄的時候會經常用到這個屬性,通過在父級域設置Cookie,然後在各個子級域拿到存在父級域中的Cookie值。比如剛才設置的username屬性,在yXXX.com下同樣可以訪問到,用户不用重新登錄就可以拿到第一次登錄進來時候的用户信息,因為這些用户信息都是存在父級域".yxxxx.com"下面,其他頁面也可以拿到。