来详细讲解一下“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的效果。
示例说明
- 假设我们的系统为
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");
其中,name
和value
分别代表要写入的Cookie的名称和值,www.aaa.com
是Cookie域名,即发送请求的系统的主域名。
- 在另外一个示例中,我们需要获取
aaa.com
下的某个Cookie的值,我们可以通过调用getCookie()
函数获取:
var value = getCookie("name");
console.log(value);
以上脚本将在浏览器控制台输出name
对应的Cookie的值。
以上就是sso跨域写cookie的一段js脚本(推荐)的完整攻略,希望对你有所帮助。
本文标题为:sso跨域写cookie的一段js脚本(推荐)
基础教程推荐
- 基于Cesium实现拖拽3D模型的示例代码 2024-01-05
- javaScript实现支付10秒倒计时 2023-08-12
- 通过position定位实现div底端对齐 2023-12-21
- IE下css常见问题总结及解决 2024-03-09
- 原生AJAX封装的简单实现 2023-01-20
- webpack高级配置与优化详解 2022-11-13
- vuex Getters基本用法 2023-10-08
- 兼容IE与firefox火狐的回车事件(js与jquery) 2024-01-04
- Vue自学之路1-vue概述 2023-10-08
- sql、linq、lambda三种表达方式转换 转自https://www.cnblogs.com/drzhong/p/4393231.html 2023-10-26