asp.net如何使用cookies

是在asp.net1.1中使用cookies,登陆为例子如何记录帐号密码如何获取... 是在asp.net1.1中使用cookies,登陆为例子
如何记录帐号密码
如何获取
展开
 我来答
sg22220037
2007-02-03 · 超过51用户采纳过TA的回答
知道答主
回答量:272
采纳率:0%
帮助的人:0
展开全部
Cookies

很少有网络技术能够象cookies来在网络用户间制造这样大的争论。Cookies只是一个无辜的名字,但是许多用户将这与邪恶的目的连在一起。

Netscape首先在它的浏览器中引入了cookies,从那时起,World Wide Web协会就支持cookie标准。大部分浏览器现在都兼容cookie的使用。

Cookies是什么?浏览器用一个或多个限定的文件支持Cookie。这些文件在Windows机器上叫做Cookie文件或者在Macintosh中叫做magic cookie文件,被网站用来在上面存储Cookie数据。网站可以在这些Cookie文件中插入信息。这样对有些网络用户就有些副作用。有些用户认为这造成了对隐私的侵犯。更糟的是:有些人认为Cookie是对个人空间的侵占。

目前有些Cookie是临时的,还有一些则是持续的。例如,cookies被Active Sever Pages用来跟踪用户进程直到用户离开网站。另外有些Cookie则保持在Cookie文件中直到用户返回时又进行调用。

在cookie文件中保存cookies会产生很大的问题。主要是有些用户担心会跟踪用户网上冲浪的习惯。害怕这种信息如果落入一些‘黑手’,那么个人也就可能成为一大堆广告垃圾信笺的对象,不过,这种担心根本不会发生,因为无法跨过网站来获得cookie信息,以这种目的来应用Cookie是不可能的。不过,由于一些用户错误的理解以及‘以讹传讹’,一些浏览器开发商别无选择只能作出响应(例如Netscape4.0提供了屏蔽Cookie的选项)。

注意

目前一些有关Cookie侵犯隐私权的讨论已经到了歇斯底里的地步,甚至包括网站站长、专家级的一些人物也在这种认识上犯过错误。

目前的主流浏览器是这样的,IE和NETSCAPE都提供了附加的控制Cookie的手段,其中NETSCAPE4.0不但可以对接受Cookie进行警告,而且还可以屏蔽掉Cookie, IE3.0也可以屏蔽Cookie,但是由于微软开发出了Active Server Pages,因此在IE4.0中就只能进行接受警告而没有提供屏蔽选项。

更过分的是,很多技巧的技术甚至已经可以在不能屏蔽cookie的浏览器上进行Cookie的屏蔽。例如,将你的cookie文件作成只读(参见http://www.cookiecentral.com

很不幸,由于上述原因,你的网站利用Cookie就会有各种麻烦,甚至造成Session的调用失败。

Cookie是怎样工作的

Cookies将通过HTTP Headers来从服务端返回到浏览器上。服务端首先在响应中利用Set-Cookie header来创建一个Cookie,浏览器后面的请求的cookie header中就会返回这个Cookie来完成浏览器的认证。

假设你创建了一个名字为UserName的Cookie来包含访问者的信息,创建Cookie时,Server的Header就象下面(假设访问者为Bill Gates):

Set-Cookie: UserName=BILL+Gates;path=/;domain=aspsite.com;

expires=Tuesday,01-Jan-99 00:00:01 GMT

这个Header就在浏览器的电脑上的Cookie文件中添加了一条记录。浏览器将名字为UserName的Cookie赋值为Bill Gates。请注意这个cookie的值是进行了URL-encoded操作的。

后来,header通知浏览器将cookie通过请求以忽略路径的方式返回服务端,因此,一个Cookie设定后,其应用的所有文件就必须在同一个目录下,例如如果开始指定的路径是/private目录,那么cookie Header对文件:/private/mypage.asp的请求就可以,而/mypage.asp由于路径变动就无法利用这个Cookie了。

domain属性能够在浏览器端更加对cookie发送进行限定。在这个例子中,cookie只能传到指定的服务器上,而决不会跑到什么www.yahoo.com或者什么其他网站。

注意

现在的浏览器在判断Cookie的路径时是区分大小写的,这就意味着如果路径是/private,那么以/PRIVATE路径方式就无法进行这个Cookie的调用和认证。

最后,Expires标记限定了Cookies的过期时间,在例子中的Header中,限定浏览器将该Cookie保存到1999年1月1日第一秒,实际上,浏览器在接受的Cookie很多时,还会自动进行删除。

浏览器创建了一个Cookie后,在每一个针对该网站的请求时就都会在Header中带着这个Cookie,也就是每一次满足该路径的情况下这个Cookie都会有效。不过,对于其他网站的请求Cookie是绝对不会跟着发送的。浏览器会这样一直发送到Cookies过期为止。Cookie Header如下:

cookie: username: Bill+Gates

在Active Server Pages中创建和读取Cookies

当利用Active Server Pages创建了一个cookie之后,你就可以使用Response对象的Cookie集合了。你可以创建两种cookie;一种是单值的,另一种可以认为是cookie字典类型,即允许多个键值对的存在。

创建单值的相对简单,如下脚本:

<% Response.Cookies(“Username”)=”Bill Gates”

Response.Cookies(“Username”).Expires=”Jan 1,1999”

%>

这个脚本的工作一目了然,将名字为Username的Cookie赋值为Bill Gates, 同时将过期时间限定为1999年1月1日,这里面需要说明的是,Expires属性如果不进行赋值,那么默认的就是用户一离开网站就过期。

由于这个例子脚本创建的是Header的部分,那么你就必须在你的Active Server Pages的任何输出语句之前进行这个脚本的操作,或者使用Buffer输出,(参看14章的有关小节)。

前面的脚本是创建一个Cookie的简单示例,只是使用了最常用的Expires属性,其实还有许多其他属性也可以自行设置,下面是一个比较完全的例子:

<%

Response.Cookies(“Username”)=”Steve Jobs”

Response.Cookies(“Username”).Expires=”Jan 1, 1999”

Response.Cookies(“Username”).Path=”/examples”

Response.Cookies(“Username”).Domain=”aspsite.com”

Response.Cookies(“Username”).Secure=True

%>

这个脚本例子和前面的其实没有什么区别,不过有三个附加的属性需要解释:

■Path属性是用来更加严格的限定浏览器发送Cookie,在这个例子中,只有针对于 /examples目录的请求的Header中才携带Cookie信息,例如/examples/hello.asp以及 /examples/chapter16/hello.asp的请求都会在Header上携带Cookie信息,但是如果是浏览器对/hello.asp的请求就不会携带该Cookie信息。Path属性的默认值是该Cookie创建的Active Server Pages所在的路径。(也就是说,即便不做指定,也不会跨过目 录发送Cookie)

■Domain属性,限定了Cookie发送的网站,例子中的aspsite.com说明cookie可以被发送到www.aspsite.com或者beetle.aspsite.com或者yeah.aspsite.com等等,同样作为默认值是该Cookie创建的网站。

■最后是Secure属性,顾名思义,该属性设为True则传递中就实行了加密算法,如果你正在使用安全接口层,那么你就可以使用这个属性(参见第二章,安装使用 Internet Information Server)

在一个Active Server Page中读取cookie,你只需要使用Request对象的Cookies集合, 例如,输出一个cookie值,那么脚本如下:

<%=Request.Cookies(“Username”) %>

这个脚本将名字为Username的Cookie值进行了输出,和以前同样的是,你依然可以利用For Each循环或者利用Count属性和For …Next循环结合的方式来将Cookie集合 的所有属性值显示出来,下面这个例子的运行结果应当无须解释了。

<%

For EACH thing IN Request.Cookies

Response.write(“<BR>”&thing&Request.Cookies(thing))

NEXT

%>

创建多个Cookie

你当然还可以创建不止一个Cookie,只是在Response对象的Cookies集合中简单的定义多个名称就可以了。不过,许多浏览器对一个指定网站就限定了三到四个Cookie。

创建多个Cookie还有一种选择,就是创建一个Cookie字典,那么一个Cookie字典中就可以含有多个键值对,下面是这么一个字典的例子:

<%

Response.Cookies(“User”)(“Name”)=”Bill Gates”

Response.Cookies(“User”)(“Password”)=”billions”

%>

这个脚本创建了一个名为User的Cookie字典,其中含有两个键分别是Name和 Password,当这么Cookie字典创建时,请求的Header中是这样的信息:

Set-Cookie:User=Name=Bill+Gates&Password=billions

一个名字为User的Cookie创建了,其中含有两个键值对,这意味着所有的键和相应的值都在一个大的Cookie中。

接受这样的Cookie值,你还可以利用以前的Response对象的Cookies集合,既可以将其全部显示,(这样显示就是没有经过解码的Header中的源代码,也就是上面Header中的信息,这样一般都是用于调试工作)也可以按每一个键的相应名称显示相应值,如下例,无须解释结果:

<%=Request.Cookies(“User”) %>

<%=Request.Cookies(“User”)(“Name”)%>

<%=Request.Cookies(“User”)(”Name”)%>

注意

利用Cookie技术传递诸如密码这样的信息要特别小心,因为一般说来,这种信息是未经加密的,当然,如果你的网站有安全接口层技术,也可以进行加密传输,但是在浏览器端该信息还是存放在文本文件中。

如果希望知道一个Cookie是否是一个Cookie字典,可以用HasKeys属性,例如下面脚本如果返回值为True,那么就是一个Cookie字典。

<%=Request.Cookies(“User”).HasKeys %>
usosr
推荐于2016-03-23 · TA获得超过129个赞
知道答主
回答量:208
采纳率:0%
帮助的人:0
展开全部
Response.Cookie("username").value="aa" 写入
username=Request.Cookies("username").value 读取
最好用SESSION比较方便
session("username")="aa" 写入
username=session("username") 读取
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skanso
2007-02-02 · TA获得超过138个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:0
展开全部
C# :

方法1:
Response.Cookies["username"].Value="gjy";
Response.Cookies["username"].Expires=DateTime.Now.AddDays(1);

方法2:
System.Web.HttpCookie newcookie=new HttpCookie("username");
newcookie.Value="gjy";
newcookie.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(newcookie);

创建带有子键的cookies:
System.Web.HttpCookie newcookie=new HttpCookie("user");
newcookie.Values["username"]="gjy";
newcookie.Values["password"]="111";
newcookie.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(newcookie);

cookies的读取:

无子键读取:
if(Request.Cookies["username"]!=null)
{
Response.Write(Server.HtmlEncode(Request.Cookies["username"].Value));
}

有子键读取:
if(Request.Cookies["user"]!=null)
{
Response.Write(Server.HtmlEncode(Request.Cookies["user"]["username"].Value));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huting974
2007-02-02
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部
vb:
'COOKIE中设置
'帐号
Response.Cookies("userId") = userId
Response.Cookies("userId").Expires = 60 '保存时间,以天为单位
'密码
Response.Cookies("pw") = pw
Response.Cookies("pw").Expires = 60

'从COOKIE取得
Response.Cookies("userId")
Response.Cookies("pw")

如果Cookies中无值,取得为空字符串""

给我加分哦!~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式