asp.net COOKIES需要注意的一点
程序员文章站
2022-07-06 18:10:52
由于cookies的设置简单,使用起来也很方便,因此,平时直接读写cookie的过程中并没有发现cookie的expires问题。 当从 request获取一个cookie...
由于cookies的设置简单,使用起来也很方便,因此,平时直接读写cookie的过程中并没有发现cookie的expires问题。
当从 request获取一个cookies实例后,如果不重新设置expires的情况下再次将cookies发送到客户端,expires会变成关闭页面过期。
举个例:
先在一个页面里发送cookies
httpcookie _currentcookie;
_currentcookie = new httpcookie("test");
_currentcookie.expires = datetime.now.addyears(1);
response.appendcookie(_currentcookie);
然后再另一个页面将它接收
httpcookie _currentcookie;
_currentcookie = request.cookies["test"];
此时,我们可以通过获取并显示出expires过期时间。
response.write(_currentcookie.expires.tostring());
照常理,我们没有改动这个cookies,获取后原封不动的有发送到了浏览器,应该不会有什么变化。
但是实际上会发现一个问题
_currentcookie["test"].expires 变成了 0001-1-1 关闭页面后即过期。
通过以上实验,发现,实际上我们无法获取cookies的expires属性,所以,在使用response.appendcookies的时候,如果该实例没有重新设置expires,则expires会以默认设置(页面关闭过期)被发送,因此每次发送cookie如果你希望有过期时间都必须重新设置。
这个问题是我在封装cookie时遇到的,虽然以前也非常经常的用到cookies,但是这次因为想封装成一个独立的类,所以在精简代码的过程中遇到这样的问题!
看来,不管多熟悉的东西,它总会有让人陌生的一面,需多多学习!
当然,这是在.net2.0 c#中,似乎1.1中是可以获取request过来的cookie的expires属性的。
当从 request获取一个cookies实例后,如果不重新设置expires的情况下再次将cookies发送到客户端,expires会变成关闭页面过期。
举个例:
先在一个页面里发送cookies
httpcookie _currentcookie;
_currentcookie = new httpcookie("test");
_currentcookie.expires = datetime.now.addyears(1);
response.appendcookie(_currentcookie);
然后再另一个页面将它接收
httpcookie _currentcookie;
_currentcookie = request.cookies["test"];
此时,我们可以通过获取并显示出expires过期时间。
response.write(_currentcookie.expires.tostring());
照常理,我们没有改动这个cookies,获取后原封不动的有发送到了浏览器,应该不会有什么变化。
但是实际上会发现一个问题
_currentcookie["test"].expires 变成了 0001-1-1 关闭页面后即过期。
通过以上实验,发现,实际上我们无法获取cookies的expires属性,所以,在使用response.appendcookies的时候,如果该实例没有重新设置expires,则expires会以默认设置(页面关闭过期)被发送,因此每次发送cookie如果你希望有过期时间都必须重新设置。
这个问题是我在封装cookie时遇到的,虽然以前也非常经常的用到cookies,但是这次因为想封装成一个独立的类,所以在精简代码的过程中遇到这样的问题!
看来,不管多熟悉的东西,它总会有让人陌生的一面,需多多学习!
当然,这是在.net2.0 c#中,似乎1.1中是可以获取request过来的cookie的expires属性的。