asp.net cookie详解使用方法

asp教程.net cookie详解使用方法

cookie 提供了一种在 web 应用程序中存储用户特定信息的方法。例如,当用户访问您的站点时,您可以使用 cookie 存储用户首选项或其他信息。当该用户再次访问您的网站时,应用程序便可以检索以前存储的信息。

 

if (page.request.cookies[domain] == null)
            {
                httpcookie cookies = new httpcookie(domain);//定义cookie对象
                cookies.values[keys] = values;
                datetime dts = datetime.now;//定义时间对象
                timespan ts = new timespan(0, 0, 20, 0);//cookie有效作用时间
                cookies.expires = dts.add(ts);//添加作用时间
                //cookies.domain = ".hnzbtb.com"; 下级域名通用
                page.response.cookies.add(cookies);
            }
            else
            {
                httpcookie cookies = page.request.cookies[domain];
                cookies.values[keys] = values;
                datetime dts = datetime.now;//定义时间对象
                timespan ts = new timespan(0, 0, 20, 0);//cookie有效作用时间,具体查msdn
                cookies.expires = dts.add(ts);//添加作用时间
                //cookies.domain = ".hnzbtb.com";
                page.response.cookies.add(cookies);
            }

 

控制 cookie 的范围
默认情况下,一个站点的全部 cookie 都一起存储在客户端上,而且所有 cookie 都会随着对该站点发送的任何请求一起发送到服务器。也就是说,一个站点中的每个页面都能获得该站点的所有 cookie。但是,可以通过两种方式设置 cookie 的范围:

将 cookie 的范围限制到服务器上的某个文件夹,这允许您将 cookie 限制到站点上的某个应用程序。

将范围设置为某个域,这允许您指定域中的哪些子域可以访问 cookie。

将 cookie 限制到某个文件夹或应用程序
若要将 cookie 限制到服务器上的某个文件夹,请按下面的示例设置 cookie 的 path 属性:

vbc#c++f#jscript
复制dim appcookie as new httpcookie("appcookie")
appcookie.value = "written " & datetime.now.tostring()
appcookie.expires = datetime.now.adddays(1)
appcookie.path = "/application1"
response.cookies.add(appcookie)
注意 

还可以通过将 cookie 直接添加到 cookies 集合的方式来编写 cookie,如先前的示例所示。
 

路径可以是站点根目录下的物理路径,也可以是虚拟根目录。所产生的效果是 cookie 只能用于 application1 文件夹或虚拟根目录中的页面。例如,如果您的站点名称为 www.contoso.com,则在前面示例中创建的 cookie 将只能用于路径为 http://www.contoso.com/application1/ 的页面以及该文件夹下的所有页面。但是,cookie 将不能用于其他应用程序中的页面,如 http://www.contoso.com/application2/ 或 http://www.contoso.com/ 中的页面。

注意 
在某些浏览器中,路径区分大小写。您无法控制用户如何在其浏览器中键入 url,但如果应用程序依赖于与特定路径相关的 cookie,请确保您创建的所有超链接中的 url 与 path 属性值的大小写相匹配。
 

限制 cookie 的域范围
默认情况下,cookie 与特定域关联。例如,如果您的站点是 www.contoso.com,那么当用户向该站点请求任何页时,您编写的 cookie 就会被发送到服务器。(这可能不包括带有特定路径值的 cookie。)如果站点具有子域(例如,contoso.com、sales.contoso.com 和 support.contoso.com),则可以将 cookie 与特定的子域关联。若要执行此操作,请设置 cookie 的 domain 属性,如此示例所示:

vbc#c++f#jscript
复制response.cookies("domain").value = datetime.now.tostring()
response.cookies("domain").expires = datetime.now.adddays(1)
response.cookies("domain").domain = "support.contoso.com"

当以此方式设置域时,cookie 将仅可用于指定的子域中的页面。还可以使用 domain 属性创建可在多个子域间共享的 cookie,如下面的示例所示:

vbc#c++f#jscript
复制response.cookies("domain").value = datetime.now.tostring()
response.cookies("domain").expires = datetime.now.adddays(1)
response.cookies("domain").domain = "contoso.com"
随后 cookie 将可用于主域,也可用于 sales.contoso.com 和 support.contoso.com 域。

读取 cookie
浏览器向服务器发出请求时,会随请求一起发送该服务器的 cookie。在 asp.net教程 应用程序中,可以使用 httprequest 对象读取 cookie,该对象可用作 page 类的 request 属性使用。httprequest 对象的结构与 httpresponse 对象的结构基本相同,因此,可以从 httprequest 对象中读取 cookie,并且读取方式与将 cookie 写入 httpresponse 对象的方式基本相同。下面的代码示例演示两种方法,通过这两种方法可获取名为 username 的 cookie 的值,并将其值显示在 label 控件中:

vbc#c++f#jscript
复制if not request.cookies("username") is nothing then
    label1.text = server.htmlencode(request.cookies("username").value)
end if

if not request.cookies("username") is nothing then
    dim acookie as httpcookie = request.cookies("username")
    label1.text = server.htmlencode(acookie.value)
end if

在尝试获取 cookie 的值之前,应确保该 cookie 存在;如果该 cookie 不存在,将会收到 nullreferenceexception 异常。还请注意在页面中显示 cookie 的内容前,先调用 htmlencode 方法对 cookie 的内容进行编码。这样可以确保恶意用户没有向 cookie 中添加可执行脚本。有关 cookie 安全性的更多信息,请参见“cookie 和安全性”一节。

注意 
由于不同的浏览器存储 cookie 的方式不同,因此,同一计算机上的不同浏览器没有必要能够读取彼此的 cookie。例如,如果使用 internet explorer 测试一个页面,然后再使用其他浏览器进行测试,那么后者将不会找到 internet explorer 保存的 cookie。
 

读取 cookie 中子键值的方法与设置该值的方法类似。下面的代码示例演示获取子键值的一种方法:

vbc#c++f#jscript

复制if not request.cookies("userinfo") is nothing then
    label1.text = _
        server.htmlencode(request.cookies("userinfo")("username"))
    label2.text = _
        server.htmlencode(request.cookies("userinfo")("lastvisit"))
end if

在上面的示例中,代码读取子键 lastvisit 的值,该值先前被设置为字符串表示形式的 datetime 值。cookie 将值存储为字符串,因此,如果要将 lastvisit 值作为日期使用,必须将其转换为适当的类型,如此示例所示:

vbc#c++f#jscript
复制dim dt as datetime
dt = datetime.parse(request.cookies("userinfo")("lastvisit"))
cookie 中的子键被类型化为 namevaluecollection 类型的集合。因此,获取单个子键的另一种方法是获取子键集合,然后再按名称提取子键值,如下面的示例所示:

vbc#c++f#jscript

复制if not request.cookies("userinfo") is nothing then
    dim userinfocookiecollection as _
        system.collections.specialized.namevaluecollection
    userinfocookiecollection = request.cookies("userinfo").values
    label1.text = _
        server.htmlencode(userinfocookiecollection("username"))
    label2.text = _
        server.htmlencode(userinfocookiecollection("lastvisit"))
end if

更改 cookie 的到期日期
浏览器负责管理 cookie,而 cookie 的到期时间和日期可帮助浏览器管理 cookie 的存储。因此,虽然可以读取 cookie 的名称和值,但无法读取 cookie 的到期日期和时间。当浏览器向服务器发送 cookie 信息时,并不包括有效期信息。(cookie 的 expires 属性始终返回值为 0 的日期时间值。)如果您担心 cookie 的到期日期,必须重新设置该 cookie,该过程在“修改和删除 cookie”一节中介绍。

注意 
可以在向浏览器发送 cookie 之前读取已在 httpresponse 对象中设置的 cookie 的 expires 属性。但是,您无法从返回的 httprequest 对象中获取有效期。
 

读取 cookie 集合
有时,您可能需要读取可供页面使用的所有 cookie。若要读取可供页面使用的所有 cookie 的名称和值,可以使用如下代码依次通过 cookies 集合。

vbc#c++f#jscript

复制dim i as integer
dim output as system.text.stringbuilder = new system.text.stringbuilder
dim acookie as httpcookie
for i = 0 to request.cookies.count - 1
    acookie = request.cookies(i)
    output.append("cookie name = " & server.htmlencode(acookie.name) _
        & "<br />")
    output.append("cookie value = " & _
        server.htmlencode(acookie.value) & "<br /><br />")
next
label1.text = output.tostring()

注意 
在运行此代码时,可能会看到一个名为 asp.net_sessionid 的 cookie。asp.net 使用该 cookie 来存储您的会话的唯一标识符。会话 cookie 不会保存在您的硬盘上。有关会话 cookie 的更多信息,请参见本主题后面的“cookie 和会话状态”一节。
 

时间: 2024-09-15 23:21:40

asp.net cookie详解使用方法的相关文章

[ASP.NET] Session 详解

asp.net|session|详解 阅读本文章之前的准备 阅读本文章前,需要读者对以下知识有所了解.否则,阅读过程中会在相应的内容上遇到不同程度的问题. 懂得ASP/ASP.NET编程  了解ASP/ASP.NET的Session模型  了解ASP.NET Web应用程序模型  了解ASP.NET Web应用程序配置文件Web.config的作用.意义及使用方法  了解Internet Information Services(以下简称IIS)的基本使用方法  了解如何在Microsoft S

JavaScript操作Cookie详解

 这篇文章主要介绍了JavaScript操作Cookie详解,本文讲解了什么是Cookie.Cookie基础知识.Cookie常见问题.cookie 有两种清除方式.Cookie基础用法.Cookie高级用法等内容,需要的朋友可以参考下     什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值." - w3school cooki

收藏:ASP的函数详解大汇总

函数|详解 ASP的函数详解 join(expression,"连接符") split :接收相关的参数,使之成为数组. Array() FUNCTION: 返回一个数组 SYNTAX: Array(list) ARGUMENTS: 字符,数字均可 EXAMPLE: RESULT: 建立了一个包含7个元素的数组myArray myArray("Sunday","Monday", ... ... "Saturday") CInt

ASP.NET OutputCache详解

  这篇文章主要介绍了ASP.NET OutputCache详解,本文详细讲解了OutputCache的语法.OutputCache的参数.OutputCache使用示例等内容,需要的朋友可以参考下 当用户访问页面时,整个页面将会被服务器保存在内存中,这样就对页面进行了缓存.当用户再次访问该页,页面不会再次执行数据操作,页面首先会检查服务器中是否存在缓存,如果缓存存在,则直接从缓存中获取页面信息,如果页面不存在,则创建缓存. 页面输出缓存适用于那些数据量较多,而不会进行过多的事件操作的页面,如果

ASP.NET 2.0验证cookie详解

对于ASP.NET Forms验证,想必大家都非常的熟悉.然而,在控制用户的(过期时间)expired time的时候,你是否遇到过一些奇怪的现象呢?虽说只是一个小小的cookie,但是其中可能有很多的东西你都不知道.今天我将和大家详细讨论一下cookie的注意点. 在ASP.NET 的Forms验证中,通常我们会使用ASP.NET自带的Login控件来进行验证.同时,在web.config文件中,我们所有的Forms设置都设为默认.现在,问题就来了. 1) 为什么我明明点了"Remember

ASP计数器设计详解-1

计数器|设计|详解 Active Server Pager(动态服务器主页,简称ASP),通过读写服务器的文件,结合script语言(VBscript或Jscript)和html码可以方便地实现页面计数器功能.现流行的ASP教材和网络上的ASP教程都谈到过ASP计数器的设计问题,但是都过于简单,比如没有提到怎样实现计数器脚本和主页面的分离以及图象计数器的实现等.下面就作者为单位制作NT web站点的经验,举实例循序渐进谈谈关于ASP计数器的设计,希望能给ASP的初学者和对ASP WEB编程有兴趣

ASP计数器设计详解(转载)

计数器|设计|详解 Active Server Pager(动态服务器主页,简称ASP),通过读写服务器的文件,结合script语言(VBscript或Jscript)和html码可以方便地实现页面计数器功能.现流行的ASP教材和网络上的ASP教程都谈到过ASP计数器的设计问题,但是都过于简单,比如没有提到怎样实现计数器脚本和主页面的分离以及图象计数器的实现等.下面就作者为单位制作NT web站点的经验,举实例循序渐进谈谈关于ASP计数器的设计,希望能给ASP的初学者和对ASP WEB编程有兴趣

ASP计数器设计详解

计数器|设计|详解 Active Server Pager(动态服务器主页,简称ASP),通过读写服务器的文件,结合script语言(VBscript或Jscript)和html码可以方便地实现页面计数器功能.现流行的ASP教材和网络上的ASP教程都谈到过ASP计数器的设计问题,但是都过于简单,比如没有提到怎样实现计数器脚本和主页面的分离以及图象计数器的实现等.下面就作者为单位制作NT web站点的经验,举实例循序渐进谈谈关于ASP计数器的设计,希望能给ASP的初学者和对ASP WEB编程有兴趣

php cookie 详解使用实例_php实例

下面首先为大家介绍一下cookie概念及工作原理. 什么是 Cookie? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息. Cookie 的基本工作原理 如果用户再次访问站点上的页面,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie.如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点. Cookie 有哪些用途? Cookie 能够帮助 Web 站点