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

然而,如果用户拥有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

时间: 2024-10-29 00:06:18

Asp中如何设计跨越域Cookie的相关文章

Asp中如何设计跨越域的Cookie

Cookie简介 首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie. Cookie是存储在客户端计算机中的一个小文件,这就意味着每当一个用户访问你的站点,你就可以秘密地在它的硬盘上放置一个包含有关信息的文件.这个文件几乎可以包含任何你打算设置的信息,包括用户信息.站点状态等等.这样的话,就有一个潜在的危险:这些信息有可能被黑客读取.为了防止这个问题的发生,一个有效的办法就是cookie只能被创建它的域所存取.这就是说:比如ytu.edu.cn只能访问ytu.edu.

跨越域的Cookie

cookie 所有的网站开发者都会非常喜欢cookie的强大特性和易用性,它在跟踪用户信息,建设人性化.个性化的网站方面,有着强大的作用,而且,又避免了使用数据库的昂贵开销.但是,cookie却不能跨越域传递,只有那些创建它的域才能访问:这里,我们讨论如何利用ASP突破这个限制.Cookie简介首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie.Cookie是存储在客户端计算机中的一个小文件,这就意味着每当一个用户访问你的站点,你就可以秘密地在它的硬盘上放置一个包含有

跨越域的Cookie(转)

cookie 跨越域的Cookie赵金东    所有的网站开发者都会非常喜欢cookie的强大特性和易用性,它在跟踪用户信息,建设人性化.个性化的网站方面,有着强大的作用,而且,又避免了使用数据库的昂贵开销.但是,cookie却不能跨越域传递,只有那些创建它的域才能访问:这里,我们讨论如何利用ASP突破这个限制.    Cookie简介    首先,我们对Cookie做一个简单的介绍,说明如何利用ASP来维护cookie.    Cookie是存储在客户端计算机中的一个小文件,这就意味着每当一个

ASP中Cookie使用指南(转)

cookie 甘冀平翻译的<ASP中Cookie使用指南> 实际上,在web开发中,cookie仅仅是一个文本文件,当用户访问站点时,它就被存储在用户使用的计算机上,其中,保存了一些信息,当用户日后再次访问这个站点时,web可以将这些信息提取出来. 尽管现在听起来cookie没有什么激动人心的,但实际上利用它,你能实现许多有意义的功能!比如说:你可以在站点上放置一个调查问答表,询问访问者最喜欢的颜色和字体,然后根据这些定制用户的web界面.并且,你还可以保存访问者的登录密码,这样,当访问者再次

如何在ASP.NET中获取随机生成的cookie加密与验证密钥

asp.net|cookie|加密|随机     本文是从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题的补充,通过示例代码说明如何通过反射在ASP.NET 1.1与ASP.NET 2.0中获取随机生成的cookie加密与验证密钥.ASP.NET 1.1示例代码:            object machineKeyConfig = HttpContext.Current.GetConfig("system.web/machineKey");    

谈谈如何在ASP.NET Core中实现CORS跨域_实用技巧

CORS(Cross-origin resource sharing)是一个W3C标准,翻译过来就是 "跨域资源共享",它主要是解决Ajax跨域限制的问题. CORS需要浏览器和服务器支持,现在所有现代浏览器都支持这一特性.注:IE10及以上 只要浏览器支持,其实CORS所有的配置都是在服务端进行的,而前端的操作浏览器会自动完成. 在本例中,将演示如何再ASP.NET Core中实现CORS跨域. 前期准备 你需要windows系统. 你需要安装IIS. 推荐使用VS2015 Upda

在ASP中执行多个页面的表单提交

假设现在你要在站点上建立一个多页面的订货表单,从而执行从站点通过email发给订单书写人,并假定这些单独的页面.页面的个数以及页面上的输入域都可以根据实际要订购的产品而改变. 如果我们将每个页面都分别提交给FrontPage的 email 向导或CGI 的email 程序,那么可怜的订单书写人就要为订单的每一页都收到一个单独的邮件信息.当然我们可以通过session变量.隐藏域或查询字符串将订货数据从一页传递到另一页,但是在内存中储存这些数据会造成应用程序不平衡,另外潜在地需要大量的脚本.而且当

ASP中简易用户访问控制-1

访问|控制 在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法.另外的两种流行方法是使用cookie,或者使用ASP Session变量.在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限. 使用cookie来跟踪访问者跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上.做为基本应用,cookie被当作用户再次访问站

ASP高级技巧:在ASP中使用Oracle数据库

oracle|高级|技巧|数据|数据库 Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言.许多ASP开发人员一直在考虑,能否在开发互联网应用.电子商务网站.互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库.在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法. 在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Obje