共计 1247 个字符,预计需要花费 4 分钟才能阅读完成。
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” 下面,其他页面也可以拿到。