2个完全分离的独立网站如果都创建名为user的cookies(在同一浏览器里同时登陆的情况下),客户端应该是2个cookies,那么当我实现跨域访问的时候,用户信息是怎么通过cookies传递的呢?举个了例子讲,访问csdn.net用户的cookies被保存2周。访问另一个与csdn实现sso的站点,假设是cssn.net,怎么来实现已登录的状态?而且这样的操作很可能是在已经关闭了csdn页面,或者说不是同一天但却是在cookies有效期里。

解决方案 »

  1.   

    跨域的两个网站,本来是不能使用cookie就“传过去”的!如果你仔细看sso的实现demo,你会发现基本上都是通过url参数作为中介,而具体用url参数传什么可能各种实现不同,但是都说明了不可能通过cookie自己就传过去了。当然,如果所谓的两个网站本来就是同一个域下面的,那么同一个域下面的所有子目录里边的页面都可以共享这个域下的cookie,所以二级域名网站就直接共享cookie就可以了(当然,要在程序中特意指定一级域名才行)。
      

  2.   

    至于说“而且这样的操作很可能是在已经关闭了csdn页面,或者说不是同一天但却是在cookies有效期里”,这有点邪乎了。例如你在大网的某个小门户下注册,实际上信息写在本网站的磁盘cookie的同时也写在其它门户网站的磁盘cookie里了,只要打开几个不可见的iframe来分别访问其它门户的登录页面即可,用户感觉不到什么。
      

  3.   

    是。url参数并且(或者)在iframe中暗中操作其它网站的登录页面,总之是“推”过去的数据。
      

  4.   

    cookie跨域指的是这种news.a.com 和b.a.com这种域,在同一顶级域名下  
    机器都不同不能跨域进行cookies操作的
    通过url传递加密后的认证凭证