您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Asp >> 正文

Google
跨越域的Cookie
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 15:42:29

    所有的网站开发者都会非常喜欢cookie的强大特性和易用性,它在跟踪用户信息,建设人性化、个性化的网站方面,有着强大的作用,而且,又避免了使用数据库的昂贵开销。但是,cookie却不能跨越域传递,只有那些创建它的域才能访问;这里,我们讨论如何利用ASP突破这个限制。
    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
  &nbs

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关专题:
     
     网友评论:(评论内容只代表网友观点,与本站立场无关!)
    GOOGLE广告

    阅读排行

    相关文章

    没有相关文章

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
    中国教师站

    中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
    [备用域名:www.JXZYW.Com] 有事请留言有事请留言
    【实力成就精品 诚信呵护品牌】

    信息产业部备案
    苏ICP备06018635号