sso跨域写cookie的一段js脚本(推荐)

来详细讲解一下“sso跨域写cookie的一段js脚本(推荐)”的完整攻略。

来详细讲解一下“sso跨域写cookie的一段js脚本(推荐)”的完整攻略。

什么是SSO?

SSO(Single Sign-On,单点登录),指在多个应用系统中,用户只需登录一次就可以访问所有相互信任的应用系统。

什么是跨域?

跨域是指浏览器禁止通过客户端脚本语言发起对不同源(协议、域名、端口号)的请求。

为什么要跨域写Cookie?

由于浏览器的同源策略限制,当我们的系统跨域向其他系统发送请求时,常常会遇到Cookie无法共享的问题。为了解决这个问题,我们需要实现跨域写Cookie。

解决方案

以下是一段可以实现跨域写Cookie的JavaScript脚本:

<script>
  var cookie = document.cookie;
  if (cookie != "") {
    var cookies = cookie.split("; ");
    for (var i = 0; i < cookies.length; i++) {
      var cookie = cookies[i];
      var index = cookie.indexOf("=");
      var name = cookie.substring(0, index);
      var value = cookie.substring(index + 1);
      document.cookie = name + "=;" + "expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/";
    }
  }
  function setCookie(name, value, domain) {
    var exdate = new Date();
    exdate.setTime(exdate.getTime() + 1000 * 60 * 60 * 24);
    var expires = exdate.toGMTString();
    document.cookie = name + "=" + value + ";expires=" + expires + ";path=/" + ";domain=" + domain;
  }
  function getCookie(name) {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
      var cookie = cookies[i];
      while (cookie.charAt(0) == " ") {
        cookie = cookie.substring(1);
      }
      if (cookie.indexOf(name + "=") == 0) {
        return cookie.substring(name.length + 1, cookie.length);
      }
    }
    return null;
  }
</script>

该脚本将Cookie写入客户端的document.cookie对象中,并在写入之前清空旧的Cookie。其中setCookie()函数用于写入新的Cookie,getCookie()函数用于获取客户端Cookie。

该脚本适用于跨主域写入Cookie。例如,假设主域为aaa.com,我们要向主域为bbb.com的系统写入Cookie。此时,在主域bbb.com中引入以上JavaScript脚本即可实现跨域写Cookie的效果。

示例说明

  1. 假设我们的系统为www.aaa.com,需要向www.bbb.com写入Cookie。在www.bbb.com的站点中,我们需要引入以上JavaScript脚本:
<script src="http://www.aaa.com/js/setcookie.js"></script>

引入之后,我们可以通过调用setCookie()函数来写入Cookie:

setCookie("name", "value", "www.aaa.com");

其中,namevalue分别代表要写入的Cookie的名称和值,www.aaa.com是Cookie域名,即发送请求的系统的主域名。

  1. 在另外一个示例中,我们需要获取aaa.com下的某个Cookie的值,我们可以通过调用getCookie()函数获取:
var value = getCookie("name");
console.log(value);

以上脚本将在浏览器控制台输出name对应的Cookie的值。

以上就是sso跨域写cookie的一段js脚本(推荐)的完整攻略,希望对你有所帮助。

本文标题为:sso跨域写cookie的一段js脚本(推荐)

基础教程推荐