Asp中如何设计跨越域的Cookie


  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文件来 获得进一步的 了解 。

  1—2

  'SiteB.com

  ' 审查cookie

  If not Request.Cookies("SlteB_Cookle").Haskeys then

  '重定向到 siteA.com

  Response.Redirect("http://www.siteA.com/index.asp"&"?checked=True")

  Else

  '猎取username

  strUsername=Request.Cookies("SiteB_Cookie")("Username")

  '将消费者连同一个特别的 标记返回到siteA.com

  Response.Redlrect("http://www.siteA.com/index.asp"&"?checked=True"&"identrfer="&strUsername)

  End if

  假如消费者在siteB.com上仍没有cookie,于是,将他送回到siteA.com,而且通过在 查问语句中提供一个叫做"checkd"的参数让 利用程序晓得你已经 审查过cookie了 。不然,将消费者送回到siteB.com,并退出循环 。