`
zhouzhk
  • 浏览: 94707 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SSO-cookie操作

阅读更多

   在操作cookie的过程中走了一些弯路,cookie是不能跨域的,不过网上搜索到的函数,貌似能够跨域。于是在IE6和maxthon1.6上不断尝试,终于以失败告终.

 

<script type="text/javascript">

   function setCookie(name,value,expiry,path,domain){


   var nameString = name +"='"+ value+"'";

   var expiryString = (expiry == null)?"" : ";expires ='" + expiry.toGMTString()+"'";

   var pathString = (path == null) ? "":";path ='" + path+"'";

   var domainString = (domain == null)?" ":";domain ='" + domain+"'";
  
   var cookies=nameString + expiryString + pathString + domainString;
  
   document.cookie = cookies;
   }

</script>

  上述函数中,如果传入了domain和path的值,cookie都设置不成功:

       var d=new Date(2008,12,31);
       setCookie("test","test",d,"/ExampleApp",null);
       setCookie("test2","test2",d,"/help",null);
       setCookie("test2","test3",d,"/help",www.test.com.cn);

       //-------------------------------

      setCookie("test4","test4",d,null,null);

 java的servlet中也是如此:   

   Cookie test5=new Cookie("test5","test1");
    test5.setDomain("www.test1.com.cn");
    test5.setPath("/help") ;
    test5.setMaxAge(24*60*60);
    response.addCookie(test5) ;
 
    Cookie test6=new Cookie("test6","test6");
    test6.setDomain(request.getServerName());
    test6.setPath(request.getServletPath()) ;
    test6.setMaxAge(24*60*60);
    response.addCookie(test6) ;
    //---------------------------
    Cookie test7=new Cookie("test7","test7");
    test7.setMaxAge(24*60*60);
    response.addCookie(test7) ;

    Cookie test8=new Cookie("test8","test8");
    test8.setMaxAge(24*60*60);
    response.addCookie(test8) ;

   设置了path和domain也没有报错,但是这个cookie就没有了。因此上述语句只成功设置了test4、test7、test8这三个cookie的值.下面是后台可以读取到的cookie的各个属性的值,等号前面是属性名称,等号后面是属性的值.:

 DEBUG (CookieServlet.java:29) -  name=test4,value='test4',domain=null,path=null
 DEBUG (CookieServlet.java:29) -  name=test7,value=test7,domain=null,path=null
 DEBUG (CookieServlet.java:29) -  name=test8,value=test8,domain=null,path=null
 DEBUG (CookieServlet.java:29) -  name=JSESSIONID,value=1ABAF39C37AD75BAE09435DE45239AEA,domain=null,path=null

这份代码应该是正确的了 :-)

/**
 * setCookie
 * 如果多次调用,每次传入不同的sName,就可设置多个cookie的值
 */
function setCookie(sName,sValue,dExpiry){
   var sNameString = sName +"="+escape(sValue);
   var sExpiryString = (dExpiry == null)?"":";expires =" + dExpiry.toGMTString();
 
   document.cookie = sNameString + sExpiryString ;
}

// Retrieve the value of the cookie with the specified name.
function getCookie(sName){
  // cookies are separated by semicolons
  var aCookie = document.cookie.split(";");
  for (var i=0; i < aCookie.length; i++){
     // a name/value pair (a crumb) is separated by an equal sign
     var aCrumb = aCookie[i].split("=");
     if (sName == aCrumb[0])
        return unescape(aCrumb[1]);
   }
  // a cookie with the requested name does not exist
  return null;
}

// Delete the cookie with the specified name.
function delCookie(sName){
   var sValue="delete";
   document.cookie = sName + "=" + escape(sValue) + "; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}


分享到:
评论

相关推荐

    sso-use-cookie单点登录

    在这个项目中,我们利用SpringBoot框架来实现基于Cookie的SSO。下面将详细解释这个项目的实现原理、流程以及涉及的关键技术。 一、SpringBoot与SSO结合 SpringBoot以其简洁的配置和强大的功能深受开发者喜爱,是...

    xxl-sso-master.zip

    5. **安全策略**:XXL-SSO 还包含了各种安全措施,如票据加密、过期策略等,以防止非法攻击和恶意操作。 在"xxl-sso-master.zip"压缩包中,包含的就是XXL-SSO 的源代码和相关配置文件,开发者可以深入研究其内部...

    单点登录SSO-图示与讲解

    - **服务端步骤与代码对应**:为了确保SSO过程的透明性和可追踪性,开发者需要在服务端代码中明确标注每一步操作的具体实现,包括Cookie的写入时机、URL参数的设置等,这有助于理解和调试整个SSO流程。 ##### 2. ...

    单点登录(SSO)实现方式(附源码).doc

    **SSO-Server**:用户登录和注销操作在此进行,通常采用Form认证。登录成功后,SSO-Server会为每个SSO-Client分配一个唯一的Token。Token包含用户身份信息,且被安全地存储和管理。 b. **SSO-Client**:当用户...

    SSO-相关核心技术知识

    JavaScript提供了对Cookie的读写支持,使得开发者能够在客户端直接操作Cookie。 **4.1 获取所有Cookie** ```javascript // 获取所有cookie var cookies = document.cookie; ``` **4.2 设置Cookie** ```...

    SSO 单点登录解决方案 设计流程图

    该解决方案的设计流程图将会详细介绍 SSO 的实现机制、时序图、数据库设计、程序实现和修改、Cookie 和 Redis 的使用、相关 API 提供给其他业务的需要等方面的知识点。 设计流程图 SSO 单点登录解决方案的设计流程...

    xxl-sso.zip

    使用Redis的优势在于它的高速读写能力和内存中的数据操作,能有效减少数据库的负载。 登录方式上,该系统支持cookie和token两种方式。Cookie是一种常用的身份标识机制,服务器将sessionID通过cookie发送给客户端,...

    单点登录&单点登出(Cookie+ticket)

    在本项目中,"单点登录&单点登出(Cookie+ticket)"是通过Servlet技术实现的,利用Cookie和Ticket这两种机制来处理SSO的过程。 Cookie是Web应用中用于跟踪用户状态的一种常见方法。在SSO场景下,当用户首次登录SSO...

    java 基于 Cookie 的 SSO 中间件 kisso 低代码

    Kisso是一个基于Cookie的轻量级SSO中间件,它简化了SSO的实施过程,尤其是对于那些不熟悉复杂认证流程的开发者来说,Kisso的低代码特性使其变得更加友好。 Kisso的工作原理大致如下: 1. 用户首次访问系统A时,...

    webextension-allow-sso-iframes:一个WebExtension,可通过更改请求标头来允许sso登录页面的iframe

    它执行以下操作: 删除所有x-frame-options响应标头删除所有content-security-policy响应标头更改所有set-cookie响应标头以设置SameSite=None (这也需要为cookie设置Secure标志) 如果sec-fetch-dest请求标头等于...

    SSO单点登录.zip

    - **Cookie与Session**:在SSO中,Cookie通常用于存储票据,而Session则用于服务器端保存用户状态。 - **单点登出(SLO)**:与SSO相对应,用户登出一次即可从所有关联系统中退出,保持安全性。 3. SSO实现架构:...

    SpringBoot-SSO.rar

    在SSO场景中,它负责处理用户的登录请求,生成和验证票据(如JWT或Cookie)。 2. **MySQL与JPA**: MySQL是一个广泛使用的开源关系型数据库管理系统,用于存储用户信息和会话数据。JPA(Java Persistence API)是...

    CAS-SSO系统架构 ppt

    CAS-SSO的请求处理流程涉及多个步骤,包括子系统拦截器的介入、与中心服务器的交互、以及登录和注销的具体操作。当用户通过URL请求访问子系统时,拦截器首先检查是否存在有效的ticket(一种临时授权凭证)。若存在,...

    SSO 单点登录(java)

    10. **扩展性与兼容性**:随着业务发展,可能需要支持更多的应用系统,或者与其他SSO系统互操作。设计时应考虑到扩展性和兼容性,如采用标准协议,提供API接口等。 以上是SSO单点登录在Java环境中的主要技术和知识...

    推荐给大家 sso介绍

    1. **基于Cookies实现**:这种方法通常用于同域下的应用之间,通过共享Cookie来实现单点登录。然而,这种方法在跨域环境下可能会遇到限制。为了克服这一问题,可以采用数据库等方式存储用户的会话信息。 2. **...

    cross-domain-sso:跨域单点登录案例研究

    SSO是指用户在一个应用系统中登录后,可以无感知地访问所有相互信任的应用系统,而无需重新登录。在Web环境中,由于同源策略的限制,跨域访问需要特殊的处理。CDSO就是针对这种需求提出的解决方案。 CDSO的实现通常...

    SSO单点登陆实现 cookie + jsonP 实现夸域单点登陆

    在本文中,我们将深入探讨如何使用cookie和JSONP(JSON with Padding)技术来实现跨域的SSO登录。 一、SSO原理与流程 1. **用户首次访问**:当用户尝试访问一个应用(例如SSOWebDemo1或SSOWebDemo2)时,如果未...

    SSO文档 单点登录

    SSO的核心思想是将用户的身份认证过程与业务操作分离。通常情况下,SSO系统包括以下组件: 1. **身份认证中心**:负责用户的登录认证,以及颁发、管理凭证(Ticket)。 2. **服务提供者**:即各个具体的应用系统,...

    sso_introduction.pdf

    ### SSO導入ガイド #### 本书的目的 本书旨在为单点登录(Single Sign-On,简称SSO)的导入提供入门级的介绍与指导。...无论是从安全性的角度还是从操作效率的角度来看,SSO都是一项值得投资的技术。

Global site tag (gtag.js) - Google Analytics