站长学院通行证

 

返回“站长学院”网站首页

 当前位置 → 中国站长学院网络编程Asp编程 → 浏览正文


TAG:  asp Cookie

ASP中如何设计跨越域的Cookie


作者:中国站长学院     来源:中国站长学院     点击数:     更新时间:2007年10月11日

【字体: 】        【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色) 】    【收藏本文】   【打印


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

下一页
本文共 2 页,第  [1]  [2]  页


责任编辑:admin

注册投稿

收藏本文到  >>>

相关文章

土豆丫头非常好用留言板 v1.305/31 
两个人的日记 v1.205/31 
lccyblog v2.005/31 
ASBLOG傲胜博客(个人版) v205/31 
行业多频道留言系统 v1.105/31 
商用多栏目留言反馈系统CommonM05/31 
童真岁月留言本 v2.0 05/31 
浪人留言簿 v1.005/31 
清松网络日记本 v1.7105/31 
ACTCMS网站管理系统 V2.006/01 
Discuz!NT 2.0正式开源 04/13 
ASP.NET讲座(1)-ASP.N02/22 
ASP.NET讲座(2)-ASP.N02/22 
ASP.NET讲座(3)-输入验证控02/22 
ASP.NET讲座(4)-数据绑定D02/22 
ASP.NET讲座(5)-数据库的操02/22 

推荐导读

热门资讯

资讯快报

论坛新贴

返回首页

关于我们 - 帮助(?) - 广告服务 - 诚征英才 - 友情链接 - 网站地图 - 站长BLOG

返回网站顶部

Copyright © 2007 中国站长学院(CNZZXY.COM). All Rights Reserved
站长学院服务资咨热线:0755-84289786    业务合作:(0)13554938953  (0)13423986856    网络宽带及主机提供:深圳傲网科技
粤ICP备08006968号   站长:忧郁的秋天(向管理员发邮件)   站长交流QQ群①:1815595   站长交流QQ群②:32960074