设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 341|回复: 5
打印 上一主题 下一主题

Asp中如何设计跨越域的Cookie

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 18:07:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Cookie简介
首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie。
Cookie是存储在客户端计算机中的一个小文件,这就意味着每当一个用户访问你的站点,你就可以秘密地在它的硬盘上放置一个包含有关信息的文件。这个文件几乎可以包含任何你打算设置的信息,包括用户信息、站点状态等等。这样的话,就有一个潜在的危险:这些信息有可能被黑客读取。为了防止这个问题的发生,一个有效的办法就是cookie只能被创建它的域所存取。这就是说:比如ytu.edu.cn只能访问ytu.edu.cn创建的cookie。通常来讲,这没有什么问题;但是,如果需要两个不同域上的两个不同站点共享保存在cookie中的用户信息,该如何处理呢?当然可以选择复制用户信,但是,如果你需要用户只能在一个站点上注册,并且自东成为另外一个站点的注册用户呢?或者,两个站点共享一个用户数据库,而又需要用户自动登录呢?这时候,跨越域共享cookie是最好的解决方案。

这里,先看一些ASP处理cookie的代码,以便以后便于引用参考。
以下为引用的内容:
        '创建Cookie
  Response.Cookies("MyCookie").Expires=Date+365
  Response.Cookies("MyCookle").Domain="mydomaln.com"
  Response.Cookies("MyCookle")("Username")=strUsername
  Response.Cookies("MyCookle")("Password")=strPassword

       读写cookie非常简单,上面的代码创建一个cookie并给cookie设置属性:域、过期时间,以及其他一些保存在cookie中的值。这里,strUsename,strPassword是在前面某个地方设置的变量。然后,通过下面的语句在cookie中读取。
以下为引用的内容:
  '读取Cookie
  datExpDate=Request.Cookies("MyCookie")
  strDomaln=Request.Cookies("MyCookle").Domain
  strUsername=Request.Cookies("MyCookle")("Username")
  strPassword=Request.Cookies("MyCookie")("Password")

更详细的信息,可以参考ASP的资料。
实现
简单地共享cookie的诀窍是重定向,一般过程为:
1.一个用户点击siteA.com。
2.如果用户没有siteA.com的cookie,就把用户重定向到siteB.com。
3.如果用户有siteB.com的cookie,把用户连同一个特殊的标志(将在下面解释)重定向回siteA.com,否则,只把用户重定向到siteA.com。
4.在siteA.com创建cookie。
看起来很简单,仔细分析一下:siteA.com和siteB.com共享相同的用户设置,所以,如果用户有siteB.com的cookie(已经注册),siteA.com能够同样读取cookie、提供cookie所允许的特性。这样,访问siteA.com的用户就如同访问了siteB.com。
这个检查的环节应该在siteA.com中的文件所包含一个cookies.inc中实现。让我们看一下这段代码:
以下为引用的内容:
  l—1
  'SiteA.com"检查cookie
  If Request.Querystring("Checked")<>"True" then
  If not Request.Cookies("SiteA_Cookie").Haskeys then
    '重走向到siteB.com
  Response.Redlrect("http://www.siteB.com/cookie.asp")
  End if
  End if

       如果用户有一个siteA.com的cookie,则不需要做任何事情了;第一个if语句用来消除无限的循环。让我们看一下siteB.com上的cookie.asp文件来获得进一步的理解。
如果用户在siteB.com上仍没有cookie,于是,将他送回到siteA.com,并且通过在查询语句中提供一个叫做"checkd"的参数让应用程序知道你已经检查过cookie了。否则,将用户送回到siteB.com,并退出循环。
然而,如果用户拥有siteB.com的cookie,我们需要将用户送回siteA.com并告诉siteA.com。为此,我们在数据库中附加一个唯一的标志,username。所以,我们扩展siteA.com中的代码。   

以下为引用的内容:
l—3
  'SiteA.com
         ...
         ...
       '检查标志
  If Request.Querystring("identifier")<>"" then
  strUsername=Request.Querystring("identifier")
  '记录到数据库
  Response.Cookies("siteA_Cookie").Expires=Date+365
  Response.Cookies("SiteA_Cookie").Domain="siteA.com"
  Response.Cookies("siteA_Cookie")("Username")=strUsername
  End if
2#
发表于 2010-1-4 07:05:02 | 只看该作者
平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典
回复 支持 反对

使用道具 举报

3#
发表于 2010-2-5 13:05:05 | 只看该作者
这篇帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 19:39 , Processed in 0.174083 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表