vue 项目中踩过的坑

框架

浏览数:332

2019-11-1

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”下面,其他页面也可以拿到。

作者:lfaith