什么是cookie
cookie 的英文本意是指就着牛奶一起吃的点心。然而,在因特网内,“cookie”这个字有了完全不同的意思。那么“cookie”到底是什么呢?“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦阁下从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。根据不同的设计,这些cookie数据会在硬盘保留指定的时间,理论上来说可以超过硬盘的使用年限。
cookie是http头部文件的一部分。它可以在浏览器和服务器之间互相传递,这些数据和它们的传递过程对于用户来说,是不直接可见的。
cookie的信任方式一般是基于系统帐户和域名的;当windows系统有多个用户时,其他的用户不被允许使用你的cookie数据;同时,一般情况下一个网站下的cookie不会被另外的网站读写。 多数情况下,cookie不是明文,它以某种方式被加密和解密。
Cookie 有哪些用途?
Cookie 的用途之一是存储用户在特定网站上的密码和 ID。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量空间来储存这些首选项。这样,每次阁下登录该网站时,阁下的浏览器将检查阁下是否就该唯一的服务器有任何预先定义的首选项(cookie)。如果有的话,浏览器将此 cookie 随阁下对网页的请求一起发送给服务器。Microsoft 和 Netscape 使用 cookie 在其网站上创建个人起始页。各家公司利用 cookie 的一般用途包括:在线定货系统、网站个人化和网站跟踪。
网站个人化是 cookie 最有益的用途之一。例如,当谁来到 CNN 网站,但并不想查看任何商务新闻。网站允许他将该项选为选项。从那时起(或者直到 cookie 逾期),他在访问 CNN 网页时将不会读到商务新闻。
这些 Cookie 是如何起作用的?
文档的 HTML 代码中的命令行告诉浏览器设置某一名称或数值的 cookie。以下是用来设置 cookie 脚本的一个普通实例。
双击代码全选
1
2
3
4
5
6
7
|
Set-Cookie: name = VALUE;
expires = DATE;
path = PATH;
domain = DOMAIN_NAME;
|
那么安全性如何?HTTP Cookie 不能用来从阁下的硬驱上检索个人数据、放置病毒、得到阁下的电子邮件地址或偷窃有关阁下身份的敏感信息;然而,HTTP Cookie 可用来跟踪阁下在特定网站上的所到之处。不使用 cookie 就很难进行网站跟踪。
至于其他一切与因特网有关的事,如同阁下所希望的那样是匿名的。没有网站知道阁下是谁,除非阁下自己透露给网站。同时,cookie 只是为了更好地了解使用模式并改进网站访客的效率而采用的一个网站跟踪统计手段而已。
如果网站设计师旨在使网页能与访客更具互动作用,或者若设计师计划让访客自定义网站的外观,则就需要使用 cookie。而且,如果阁下想要网站在某些情况下改变其外观,cookie 则提供了一条快速、容易的途径,让阁下的 HTML 页面按需要而改变。最新型的服务器使用 cookie 有助于数据库的互动性,进而改进网站的整体互动性。
Cookie对象
Cookie对象实际是System.Web命名空间中HttpCookie类的对象。Cookie对象为Web应用程序保存用户相关信息提供了一种有效的方法。当用户访问某个的站点时,该站点可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问该站点时,应用程序就可以检索以前保存的信息。
Cookie应用的几条限制:
(1)大多数浏览器支持最多可达4096字节的Cookie
(2)浏览器还限制了站点可以在用户计算机上保存的Cookie 数。大多数浏览器只允许每个站点保存20个Cookie。
(3)用户可以设置自己的浏览器,拒绝接受Cookie。
Cookie其实是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
当用户第一次访问某个站点时,Web应用程序发送给该用户一个页面和一个包含日期和时间的Cookie。用户的浏览器在获得页面的同时还得到了这个Cookie,并且将它保存在用户硬盘上的某个文件夹中。以后如果该用户再次访问这个站点上的页面,浏览器就会在本地硬盘上查找与该网站相关联的Cookie。如果Cookie存在,浏览器就将它与页面请求一起发送到网站,Web应用程序就能确定该用户上一次访问站点的日期和时间。
Cookie对象的属性
ASP.NET包含两个内部Cookie集合:Request对象的Cookies集合和Response的Cookies集合。其中,Request对象的Cookies 集合包含由客户端传输到服务器的Cookie,这些Cookie以Cookie标头的形式传输。Response的Cookies集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置。如果没有设置Cookie失效日期,它们仅仅保存到关闭浏览器程序为止。如果将Cookie对象的Expires属性设置为MinValue,则表示Cookie永远不会过期。Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096字节,因此不要用来保存数据集及其他大量数据。由于并非所有浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的、未加密的数据,否则会影响网站的安全性。
使用Cookie对象保存和读取信息的代码如下。
//存放信息
Response.Cookies[" nameID"].Value= " 0001";
//读取信息
String NameID=Response.Cookies[" nameID"].Value;
cookie 常用来对用户进行识别。
实例:
Welcome cookie
如何创建欢迎 cookie。
<%
dim numvisits
response.cookies("NumVisits").Expires=date+365
numvisits=request.cookies("NumVisits")
if numvisits="" then
response.cookies("NumVisits")=1
response.write("欢迎!这是您第一次访问本页面。")
else
response.cookies("NumVisits")=numvisits+1
response.write("之前,您已经访问过本页面 ")
response.write(numvisits & " 次。")
end if
%>
<html>
<body>
</body>
</html>
什么是 Cookie?
cookie 常用来对用户进行识别。cookie 是一种服务器留在用户电脑中的小文件。每当同一台电脑通过浏览器请求页面时,这台电脑也会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。
如何创建 cookie?
"Response.Cookies" 命令用于创建 cookie。
注意:Response.Cookies 命令必须位于 <html> 标签之前。
在下面的例子中,我们会创建一个名为 "firstname" 的 cookie,并向其赋值 "Alex":
<%
Response.Cookies("firstname")="Alex"
%>
向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间:
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("firstname").Expires=#May 10,2020#
%>
如何取回 cookie 的值?
"Request.Cookies" 命令用于取回 cookie 的值。
在下面的例子中,我们取回了名为 "firstname" 的 cookie 的值,并把值显示到了页面上:
<%
fname=Request.Cookies("firstname")
response.write("Firstname=" & fname)
%>
输出:
Firstname=Alex
带有键的 cookie
如果一个 cookie 包含多个值的一个集合,我们就可以说 cookie 拥有键(Keys)。
在下面的例子中,我们会创建一个名为 "user" 的 cookie 集。"user" cookie 拥有包含用户信息的键:
<%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Adams"
Response.Cookies("user")("country")="UK"
Response.Cookies("user")("age")="25"
%>
读取所有的 cookie
请阅读下面的代码:
<%
Response.Cookies("firstname")="Alex"
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Adams"
Response.Cookies("user")("country")="UK"
Response.Cookies("user")("age")="25"
%>
假设您的服务器将所有的这些 cookie 传给了某个用户。
现在,我们需要读取这些 cookie。下面的例子向您展示如何做到这一点(请注意,下面的代码会使用 HasKeys 检查 cookie 是否拥有键):
<html>
<body>
<%
dim x,y
for each x in Request.Cookies
response.write("<p>")
if Request.Cookies(x).HasKeys then
for each y in Request.Cookies(x)
response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
response.write("<br />")
next
else
Response.Write(x & "=" & Request.Cookies(x) & "<br />")
end if
response.write "</p>"
next
%>
</body>
</html>
输出:
firstname=Alex
user:firstname=John
user:lastname=Adams
user:country=UK
user:age=25
如何应对不支持 cookie 的浏览器?
如果您的应用程序需要和不支持 cookie 的浏览器打交道,那么您不得不使用其他的办法在您的应用程序中的页面之间传递信息。这里有两种办法:
1. 向 URL 添加参数
您可以向 URL 添加参数:
<a href="welcome.asp?fname=John&lname=Adams">
Go to Welcome Page
</a>
然后在类似于下面这个 "welcome.asp" 文件中取回这些值:
<%
fname=Request.querystring("fname")
lname=Request.querystring("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>
2. 使用表单
您还可以使用表单。当用户点击提交按钮时,表单会把用户输入的数据提交给 "welcome.asp" :
<form method="post" action="welcome.asp">
First Name: <input type="text" name="fname" value="">
Last Name: <input type="text" name="lname" value="">
<input type="submit" value="Submit">
</form>
然后在 "welcome.asp" 文件中取回这些值,就像这样:
<%
fname=Request.form("fname")
lname=Request.form("lname")
response.write("<p>Hello " & fname & " " & lname & "!</p>")
response.write("<p>Welcome to my Web site!</p>")
%>