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,并退出循环 。 |