使用localStorage+cookie解决同一个主域名跨域

本文介绍如何通过设置cookie的domain属性,实现在xxx.com、aaa.xxx.com和bbb.xxx.com等不同域名下的登录状态共享,重点讲解了存储token、获取cookie并存入Vuex的步骤,适用于主域名相同的场景。
摘要由CSDN通过智能技术生成

在做一个项目的时候 遇到一个这样的需求 ,一个项目分了多个域名比如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属性实现,如有错误请指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值