Cookie 跨域 和 SSO
cookie是不能跨域访问的,但是在二级域名是可以共享cookie
cookie的四个可选属性:
1、 cookie的生存期属性:expires;
默认情况下,cookie只在浏览器会话期存在.退出浏览器就丢失;
可以用expires设置时间;退出浏览器后就不会丢失并存为客户端浏览器的cookie文件;
过了时间后cookie失效,还会自动删除cookie文件.
2、 path属性:默认情况下,在同一个目录下文件可以调用;
例如:http://hanj.com/c1/1.html设置的cookie可以被http://hanj.com/c1/2.html调用.但不能被http://hanj.com/c2/目录下的文件调用;
但如把path属性设成"/";则在http://hanj.com/下的所有文件都可调用此cookie.
3、 domain属性:例如设成".hanj.com"则在.hanj.com下的所有服务器下的文件都可以调用cookie.
4、 安全属性:默认情况下为false;用http协议不安全传输;true:用https等协议安全传输.
浏览器最多保存300个cookie;为单个web服务器的最多只能保存20个cookie;每个cookie不能超过4000个字节.
单点登录实现环境:
统一平台域名:www.hanj.com
子系统1:a.hanj.com
子系统2:b.hanj.com
子系统3:c.hanj.com
统一加载平台和各子系统都是不同的服务器,统一加载平台提供登录认证服务,在统一加载平台认证系统上登录后,用户都可以被其他的系统识别。
/**
函数名称:getCookie
函数功能:获取指定名称的cookie的值
输入参数:需要测试的字符串
返回参数:
*/
function getSSOCookie()
{
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i ++){
var temp = arrStr[i].split("=");
if(temp[0] == "sso") {
return unescape(temp[1]);
}
}
return "";
}
/**
函数名称:addCookie
函数功能:添加cookie
输入参数:需要测试的字符串
返回参数:
*/
function addSSOCookie(objValue)
{
var str = "sso" + "=" + escape(objValue);
if(true){//为0时不设定过期时间,浏览器关闭时cookie自动消失
str += "; path=/";
}
document.cookie = str;
}
/**
函数名称:delCookie
函数功能:删除cookie
输入参数:需要测试的字符串
返回参数:
*/
function delCookie()
{//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = "sso" + "=a; expires=" + date.toGMTString()+"; path=/";
}
Cookie跨域单点登录
为了快速、简单的实现这一功能,首先想到就是通过JS操作Cookie并让两个不同域的cookie能够相互访问,这样就可达到了上述的效果,具体实现过程大致可分以下两个步骤:
1、在A系统下成功登录后,利用JS动态创建一个隐藏的iframe,通过iframe的src属性将A域下的cookie值作为
get参数重定向到B系统下b.aspx页面上;
var _frm = document.createElement("iframe");
_frm.style.display="none";
_frm.src="http://b.com/b.jsp?test_cookie=xxxxx";
document.body.appendChild(_frm);
2、在B系统的b.aspx页面中来获取A系统中所传过来的cookie值,并将所获取到值写入cookie中,这样就简单的实现了cookie跨域的访问; 不过这其中有个问题需要注意,就是在IE浏览器下这样操作不能成功,需要在b.aspx页面中设置P3P HTTP Header就可以解决了(具体詳細信息可以参考:http://www.w3.org/P3P/),P3P设置代码为:
/*
*也可以在html加入标记
<meta http-equiv="P3P" content='CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'>
*/
Response.AppendHeader("P3P", "CP='IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA'");
Cookie 跨域 和 SSO的更多相关文章
- cookie 跨域访问的解决方案
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. ...
- asp.net关于Cookie跨域(域名)的问题
Cookie是一个伟大的发明,它允许Web开发者保留他们的用户的登录状态.但是当你的站点有一个以上的域名时就会出现问题了.在Cookie规范上 说,一个cookie只能用于一个域名,不能够发给其它的域 ...
- 关于Cookie跨域的问题
Cookie是一个伟大的发明,它允许Web开发者保留他们的用户的登录状态.但是当你的站点有一个以上的域名时就会出现问题了.在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名 ...
- 关于Cookie跨域的问题研究
Cookie是一个伟大的发明,它允许Web开发者保留他们的用户的登录状态.但是当你的站点有一个以上的域名时就会出现问题了.在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名 ...
- 解决cookie跨域访问
一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...
- 基于Cookie跨域的单点登录问题
由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie. 1.在同一个服务器下的Cookie共享 @Component(&quo ...
- golang-在gin中cookie跨域设置(配合ajax)
1.当我在golang中,在前后端分离的情况下使用cookies时发现,跨域没有被允许.代码如下: func AccessJsMiddleware() gin.HandlerFunc { return ...
- nginx处理cookie跨域
今天在部署公司项目的时候碰到一个问题 项目地址是xxx.xx.xx.122:7480 项目A后台请求地址为xxx.xx.xx.123:8080/data-sso 开始nginx配置是 server { ...
- 解决前后端分离后的Cookie跨域问题
一. 前端Ajax关键配置 $.ajax({ type: "post", url: xxx, data: xxx, contentType: 'application/json', ...
随机推荐
- 2018-2019-2 网络对抗技术 20165318 Exp7 网络欺诈防范
2018-2019-2 网络对抗技术 20165318 Exp7 网络欺诈防范 原理与实践说明 实践目标 实践内容概述 基础问题回答 实践过程记录 简单应用SET工具建立冒名网站 ettercap D ...
- 【操作系统之十一】任务队列、CPU Load、指令乱序、指令屏障
一.CPU Loadcpu load是对使用或者等待cpu进程的统计(数量的累加):每一个使用(running)或者等待(runnable)CPU的进程,都会使load值+1;每一个结束的进程,都会使 ...
- 【IntelliJ IDEA学习之七】maven专题
版本:IntelliJIDEA2018.1.4 一.maven全局设置 设置Runner 运行VM参数:-Xms128m -Xmx512m -Duser.language=zh -Dfile.enco ...
- 用简单的JS代码制作计算器
代码+注释一共不到200行,是练习交流的必备良药 主界面如下: 操作示意图: 以下是代码部分 HTML: <div> <table class="window"& ...
- python安装 hanlp +使用 坑坑坑。。。填填填。。。
刚开始用都不知道要怎么安装,包括什么文件.百度了下发现正常安装就可以用,不用下多余的东西,但是但是但是但是但是但是但是但是 用pycharm安装不行,pip安装不行,也是见鬼了. 解决方法: 1.手动 ...
- Sitecore安全:访问权限
由于Sitecore使用Core数据库中的项来定义其用户界面,因此您可以对该数据库中的项应用访问权限,以控制对CMS功能的访问.最常见的是,将用户置于预定义的Sitecore客户端角色中 Siteco ...
- 乘法器——Wallace树型乘法器
博主最近在看乘法器相关的知识,发现现在用的比较多的是booth编码的乘法器和Wallace树型乘法器,当然两者并不是互斥的关系,他们也可以结合使用.在这里给大家介绍一下Wallace树型乘法器,希望能 ...
- 『正睿OI 2019SC Day6』
动态规划 \(dp\)早就已经是经常用到的算法了,于是老师上课主要都在讲题.今天讲的主要是三类\(dp\):树形\(dp\),计数\(dp\),\(dp\)套\(dp\).其中计数\(dp\)是我很不 ...
- java 基础 四种权限修饰符
/** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...
- Ubuntu系统下搭建docke
linux内核版本依赖 kernel version >= 3.8 可以使用如下命令查看 uname -a | awk '{split($3, arr, "-"); prin ...