JS操作饼干详解

来源:小毅博客
饼干,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员——可以自傲的饼干大师。——比

如果你象作者一样记性不好,那么你可能根本记不住人们的名字。我遇到人时,多半只是点点头,问句“吃了嘛!“,而且期望问候到此为止。如果还需要表示些什么,那么我就得求助于一些狡猾的技巧,好让我能想对方是谁,比如胡扯起一些和对方有关的人,不管他们之间关系多远,只要能避免不记得对方名字的尴尬就好:“你隔壁邻居的侄子的可爱小狗迈菲斯特怎么样?“通过这个方法,我希望能让对方感到,我确实很重视他(她),甚至还记得这些琐事,虽然实际上连名字都忘记了。但是,不是我不重视,而是我的记忆力实在是糟糕,而且要记住的名字又实在太多。如果我能给每个人设置饼干,那么我就不会再犯这种记忆力问题了。

在这篇文章里,我们要学习:

1。什么是饼干?
2。饼干的构成
3。操纵饼干
4。甜饼怪兽

什么是饼干?

你会问,什么是饼干呢?饼干是浏览器保存在用户计算机上的少量数据。它与特定的WEB页或网站站点关联起来,自动地在网页浏览器和WEB服务器之间传递。

比如,如果你运行的是Windows操作系统,使用Internet Explorer上网,那么你会发现在你的“Windows”目录下面有一个子目录,叫做“临时文件夹”。如果你有空看看这个目录,就会发现里面有一些文件,文件名称看起来就象电子邮件地址。比如在我机器上的这个目录里,就有“jim@support.microsoft.com”这样的文件。这是一个cookie文件,这个文件从哪来呢?猜一猜,它来自微软的支持站点。顺便说一句,这不是我的电子邮件地址,特此澄清。

对于管理细小的,不重要的,不想保存在中央数据库里的细节信息,饼干是个很不错的方案。(这不是说大家的名字不重要。)比如,目前网站上不断增长的自定义服务,可以为每个用户定制他们要看的内容。如果你设计的就是这样一个站点,那么你怎么来管理这样的信息:一个用户喜欢绿色的菜单条,而另一个喜欢红色的。确实是个累人的问题。不过,这样的信息,可以很安全地记录到cookie,并保存在用户的计算机上,而你自己的数据库空间可以留给更长久更有意义的数据。

供参考:饼干对于安全用途,通常很有用。我不想在此就这一问题过于深入,只是提供一个示例,可以看到如何使用在一段时间之后过期的饼干来保证站点安全:

1。使用用户名和口令,通过SSL登录。
2。在服务器的数据库里检查用户名和口令。如果登录成功,建立一个当前时间标签的消息摘要(比如MD5),并把它保存在饼干和服务器数据库里。把用户的登录时间保存在服务器数据库里面的用户记录里。
3。在进行每个安全事务时(用户处于登录状态的任何事务),把饼干的消息摘要和保存在服务器数据库里的摘要进行比较,如果比较失败,就把用户引导到登录界面。
4。如果第3步检查通过,那么检查当前时间和登录时间之音经过的时间是否超过允许的时间长度。如果用户已经超时,那么就把用户引到登录界面。
5。如果第3步和第4步都通过了,那么把登录时间重新设置成当前时间,允许事务发生。那些需要你登录的安全站点,可能多数使用的都是和这里介绍的类似的方法。
饼干的构成

饼干最初设计时,是为了CGI编程。但是,我们也可以使用Javascript脚本来操纵饼干。在本文里,我们将演示如何使用Javascript脚本来操纵饼干。(如果有需求,我可能会在以后的文章里介绍如何使用Perl进行饼干管理。但是如果实在等不得,那么我现在就教你一手:仔细看看CGI.pm。在这个CGI包里有一个Cookie()函数,可以用它建立饼干。但是,还是让我们先来介绍饼干的本质。

在Javascript脚本里,一个饼干实际就是一个字符串属性。当你读取Cookie的值时,就得到一个字符串,里面当前WEB页使用的所有饼干的名称和值。<强> 每个饼干除了名字名称值和价值这两个属性以外,还有四个属性。这些属性是:到期过期时间,路径路径,域域,以及安全安全。

到期——过期时间。指定饼干的生命期。具体是值是过期日期。如果想让饼干的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除饼干文件,没有任何影响。

路径——路径。指定与饼干关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.jzxue.com/html/java/建立了一个Cookie,那么在http://www.jzxue.com/html/java/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个饼干。这就是说,在http://www.jzxue.com/html/java/stories/articles里的任何页面都可以访问http://www.jzxue.com/html/java/index.html建立的饼干。但是,如果http://www.jzxue.com/html/asp/需要访问http://www.jzxue.com/html/java/index.html设置的厨师,该怎么办?这时,我们要把饼干的路径属性设置成“/?在指定路径的时候,凡是来自同一服务器,网址里有相同路径的所有WEB页面都可以共享饼干。现在看另一个例子:如果想让http://www.jzxue.com/devhead/filters/和http://www.jzxue.com/devhead/stories/共享饼干,就要把路径设成“/devhead”。

JS操作饼干详解