在做一个项目的时候 遇到一个这样的需求 ,一个项目分了多个域名比如xxx.com 、 aaa.xxx.com和bbb.xxx.com要求是需要在其中一个登录之后再打开另一个的时候直接显示登录状态(即公用一个token);
这个时候就遇到一个问题,由于浏览器的同源策略导致跨域,今天要解决的就是如何绕开这个跨域成功取到token(仅用于主域相同的情况)
具体方法
在登陆之后将token存入cookie中
this.setCookie("tokens", data.token);
setCookie(c_name, value) {
document.cookie =
c_name + "=" + value + ";path=/;domain=yqdh.site.ximengnaikang.com";
},
在created方法中获取存储在cookie中的token并存储到vuex中在vuex中存储到localStorage
this.setToken(this.getCookie("tokens"));
getCookie(tokens) {
// document.cookie拿取的是所有cookie字符串
var strCookie = document.cookie;
// 将所有cookie分割成数组形式
var arrCookie = strCookie.split("; ");
// 遍历数组,找到你想拿取的那一个
for (var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if (tokens == arr[0]) {
return arr[1];
}
}
return "";
},
到此就解决啦!
以上方法主要是利用cookie的domain属性实现,如有错误请指教