跨域名的Cookie实现---简单另类的实现方法

原创 2004年03月11日 10:03:00
跨域名的Cookie实现---简单另类的实现方法
 
序言
 
前因:最近又是看到不少同仁在论坛上发贴询问怎样可以实现Cookie跨域名访问。
一个老调重谈的问题,一次合理的要求与技术限制的冲撞, 想毕也困扰了不少人,所以我把自己做过的一个简单的另类实现方法与大家分享一下。
 
 
正文
 
首先讲一下流程
一用户先访问 A 网站,A网站的setCookie程序在该客户端设定了几个 Cookie 变量。
该用户再访问 B 网站,直接访问B网站的getCookie程序,这个时候getCookie 程序读取不到该客户端的Cookie变量,此时B网站的getCookie 再跳转到A网站的getCookie去读取该客户端的同名Cookie 变量(当然这些变量都是原来就在第一步已经在该客户端设定好的。),A网站读取到数据就通过地址转参返给 B 网站的程序。
 
以下用代码均用 PHP 作为程序语言讲解。
 
 
首先我们写一个简单 SetCookie 的程序,
cookieCrossSite_setValue.php
<?php
/**
* Program Name: cookieCrossSite_setValue.php
* Author: Eric Li (CN-SZ ISD)
* Date created:
* Description:
* Revision History(Verdion,Modifid By,Date of Change,Comments of Change)
*
**/
 
setcookie("cookie_user_id",   "800800800", time()+10800);
setcookie("cookie_user_name", "Ericli", time()+10800);
setcookie("cookie_user_type", "VIP", time()+10800);
 
?>
 
上面这个 SetCookie 程序没有什么好说的,我们接着看下面这个文件。
 
cookieCrossSite_getValue.php
 
<?php
/**
* Program Name: cookieCrossSite_getValue.php
* Author: Eric Li (CN-SZ ISD)
* Date created:
* Description:
* Revision History(Verdion,Modifid By,Date of Change,Comments of Change)
*
**/
$url     = "";
$domain1 = "www.domain1.com";  //根据自己调试环境赋值。
$domain2 = "www.domain2.com";
 
if ($comeFrom == $domain1){
  // display the variable.
    echo "cookie_user_id   = ".$cookie_user_id."<br>";
    echo "cookie_user_name = ".$cookie_user_name."<br>";
    echo "cookie_user_type = ".$cookie_user_type."<br>";  
}else{
    if (count($HTTP_COOKIE_VARS)==0){
        header("Location:http://".$domain1."/cookieCrossSite_getValue.php?comeFrom=".$domain2);
    }else{
   
        while (list($name, $value) = each($HTTP_COOKIE_VARS)){
            if ($value==""){
            }else{
                if ($comeFrom != "$domain2"){
                    // display all cookie variables.
                    echo "Name = ".$name."  |  Value = ".$value."<br>";
                }
                // generate a url string.
                // 这里可以适当的加上 urlencode 进行编码。
                $url .= $name."=".$value."&";
            }
        }
   
  }
    if ($comeFrom == $domain2){
        header("Location:http://".$domain2."/cookieCrossSite_getValue.php?comeFrom=".$domain1."&".$url);
    }
}
?>
 
 
以上代码已经测试通过。
 
 
测试前提:
在A 域名根目录下放两个文件
cookieCrossSite_setValue.php
cookieCrossSite_getValue.php
在B域名根目录下放一个文件
cookieCrossSite_getValue.php
 
测试步骤:
先访问A 域名的 cookieCrossSite_setValue.php
然后访问 B域名的 cookieCrossSite_getValue.php
 
 
补充
当然上面的代码只是给出一个另外实现的思路,为了更清楚了解过程,所以在URL传递参数的时候,没有对数据进行编码。
如果想要实现多个域名之间的cookie跨越,那么最好是,
用其中一个域名做中转,当 setCookie 的时候,其他几个网站的程序都跳到该中转服务器来做一次 setCookie,然后所有getCookie 的时候,就都只需到这个中转的域名下的程序来取就可以了。
 
 
 
 
liyujie2000@sohu.com
 

Cookie实现同域,跨域单点登录

[javascript] view plain copy print? Cookie 同域单点登录         最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登...
  • zmx729618
  • zmx729618
  • 2016年05月10日 11:32
  • 1716

使用cookie实现跨域系统单点登录

      上一篇博客介绍了单点登录的认证流程和实现,本文将介绍通过cookie实现单点登录。      单点登录作为目前比较流行的服务于企业业务整合的解决方案之一, 使得在多个应用系...
  • Daybreak1209
  • Daybreak1209
  • 2016年04月18日 15:30
  • 7467

Cookie同域,跨域单点登录

Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下)。但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录。...
  • smartsmile2012
  • smartsmile2012
  • 2014年07月10日 10:31
  • 19109

php中cookie实现二级域名可访问操作的方法

本文实例讲述了php中cookie实现二级域名可访问操作的方法。分享给大家供大家参考。具体方法如下: cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑定的cookie...
  • yuolligeng
  • yuolligeng
  • 2015年03月30日 20:10
  • 945

跨域名sso单点登录、利用p3p实现cookie跨域

利用P3P实现单点登录和COOKIE的跨域读写 首先说明,同一个顶级域名的情况我不说什么,很简单,就一个Cookie的Domain属性。 下面来说顶级域名不同的情况。 有时候我们会有...
  • aya19880214
  • aya19880214
  • 2015年12月02日 16:28
  • 1701

chm格式电子书另类反编译法:使用压缩软件7Z简单实现CHM电子书反编译 | 志文工作室

转自 chm格式电子书相信很多人都比较熟悉了,当然这种格式优点很多。有时候我们看着制作精美的chm电子书,希望里面的图片或是资料提取出来,这时候大家可能首先想到的就是把它反编译。如此...
  • lessconcern
  • lessconcern
  • 2014年07月15日 15:38
  • 2105

ECharts图表组件之简单关系图:如何轻松实现另类站点地图且扩展节点属性实现点击节点页面跳转

[摘要]: 站点地图不外乎就是罗列一个网站的层次结构,提炼地讲就是一个关系结构图。那么我们如何巧用ECharts图表组件内的简单关系结构图来实现一个站点的地图结构呢?另外如何点击某个节点的时候实现页面...
  • yilovexing
  • yilovexing
  • 2017年01月16日 14:14
  • 1290

ECharts图表组件之简单关系图:如何轻松实现另类站点地图且扩展节点属性实现点击节点页面跳转

站点地图不外乎就是罗列一个网站的层次结构,提炼地讲就是一个关系结构图。那么我们如何巧用ECharts图表组件内的简单关系结构图来实现一个站点的地图结构呢?另外如何点击某个节点的时候实现页面跳转呢? ...
  • zoubf
  • zoubf
  • 2016年10月05日 11:47
  • 1460

另类的CDialogBar——可停靠对话框的实现方法

本文大部分思路来自于《VISUAL C++ 6.0 MFC 类库参考手册》一书!          CDialogBar在MFC中就是提供控制条形式的非模态对话框。          其使用过程很...
  • txg703003659
  • txg703003659
  • 2012年05月10日 06:12
  • 5069

Unity3D 游戏引擎之IOS截屏 话筒录音 录制截屏视频保存沙盒(另类实现方法 )

http://tech.ddvip.com/2013-02/1359995726190109_2.html如下图所示,高级控件的按钮属于UI部分,后面的立方体对象是U3D生成,并且立方体对象在一直的旋...
  • huangmindong
  • huangmindong
  • 2014年04月29日 13:28
  • 1098
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨域名的Cookie实现---简单另类的实现方法
举报原因:
原因补充:

(最多只允许输入30个字)