Cookie之一

Cookie是存储在客户端计算机中的一些信息,这些信息多用于与服务器进行交互。使用Document对象的cookie属性可以读取和设置Cookie的内容。

17.1  Cookie介绍

在HTML和JavaScript出现初期,网页的内容比较单一,仅仅只是显示一些文字和图片。而随着网络技术的发展,客户端与服务器之间的联系变得越来越多,也越来越重要。在这些联系之中,经常需要建立一些信息,如用于识别用户的ID等,而这些信息通常都是以Cookie的形式存储在客户端计算机中的。

17.1.1  Cookie简介

从JavaScript的角度来看,Cookie就是一些信息,如用户ID、用户状态等。这信息存放在客户端计算机中,用于客户端计算机和服务器之间传递信息。在JavaScript中,可以通过Document对象的cookie属性来读取或设置这些信息。由于Cookie多用在客户端计算机和服务器端计算机之间进行通信,因此,除了客户端程序(如JavaScript)之外,还有很多服务器端的程序(如ASP等)也可以存取Cookie。

对于操作系统而言,Cookie就是一个文件,这个文件中记录着客户端计算机与服务器端计算机通信所需要的信息。为了安全方面的考虑,浏览器通常只会让Cookie的创建网站来访问该Cookie。例如,A网站所创建的Cookie只有A网站可以访问,而B网站所创建的Cookie也只有B网站可以访问,A、B网站不能访问对方所创建的Cookie。因此,用户不必担心信息泄露。

17.1.2  Cookie的使用范围

实际上,Cookie的作用就是与服务器互动。由于网络的发达,客户端与服务器的互动变得十分重要,在以下几个场合中经常可以看到Cookie的身影。

  ●     用户登录:在很多网站的登录页面中都可以看到一个Cookie选项,多用于询问用户在多长时间不需要再登录,如一天、一个月或一年等。这就需要使用Cookie技术,在用户第一次登录时,使用Cookie记录下了用户的信息,并让其保存一天、一个月或一年。只要Cookie没有过期,那么用户在下次访问需要身份验证时,就会通过Cookie将信息传递到服务器上,避免了用户的重复登录。

  ●     电子商务:在电子商务中使用最多的就是购物车和最近浏览过的商品。这两项都使用了Cookie技术。当用户看到需要购买的商品时,浏览器可以将这些商品的信息写在Cookie中,此时的Cookie相当于购物车,只不过购物车中存放的不是商品,而是商品的信息。在用户最后结账时,可以将所有的商品信息从Cookie中取出,统一付款。最近浏览过的商品的处理方式相同,也是将用户最近浏览过的商品信息存放在Cookie中,当用户下次再访问该电子商务网站时,可以看到自己上次浏览过哪些商品。在电子商务中,使用Cookie还可以将购物做得更人性化。例如,通过Cookie记录用户浏览过的商品信息,再通过分析这些商品的共性来为用户推荐相关商品。

  ●     博客:博客是目前网络中流行的网络日记。不同的用户都可以在博客中发表文章,也可以装饰自己的博客风格,如背景颜色、文字大小等。这些都可以先写在Cookie中,在用户确定之后,才一次性提交到服务器上。

17.1.3  Cookie的基本概念

Cookie与前面章节中所介绍的变量、常量等不同,Cookie的信息是记录在一个Cookie文件中,并且这个Cookie文件是存放在客户端计算机中的,在使用Cookie时必须要注意以下几个基本概念。

  ●     名称:每一个Cookie都有自己的名称,就好像每一个变量、常量都有自己的一个名称一样。通过Cookie名称可以存储Cookie信息。在JavaScript中,Cookie名称也必须是一个合法的标识符。如用户编号可以使用userId来命名。

  ●     值:通过Cookie名称所存储的Cookie值,也就是存放在Cookie中的具体信息。例如用户的编号为10,那么userId的值为10。

  ●     生存期:也就是Cookie的有效日期。在默认情况下,一个Cookie的生存期就是浏览器窗口关闭的时间。也就是说,在一个浏览器窗口中创建的Cookie,只要该浏览器没有关闭,那么该Cookie就会一直有效,一旦该浏览器窗口关闭,那么由该浏览器窗口所创建的Cookie就会失效,不能再访问。如果想要该Cookie在浏览器窗口关闭后还可以使用,就必须要为该Cookie设置生存期,也就是失效的日期。

  ●     路径:出于安全方面的考虑,通常一个网页所创建的Cookie只能被与该网页在同一目录或子目录下的所有网页访问,而不能被其他目录下的网页访问。例如由“http://www.aspxfans.com/BookSupport/sample.htm”所创建的Cookie,可以被“http://www.aspxfans.com/BookSupport/”下的所有网页访问,也可以被“http://www. aspxfans.com/BookSupport/jsCode/”下的所有网页访问,但不能被“http://www. aspxfans.com/”下或“http://www.aspxfans.com/Book/”下的任何网页访问。可以通过设置Cookie路径的方法让“http://www.aspxfans.com/”下或“http://www.aspxfans. com/Book/”下的所有网页访问该Cookie。

  ●     域:同样是出于安全方面的考虑,在默认情况下,即使设置了Cookie的路径,也只能在同一个域中访问Cookie,不同域之间的网页是不能互相访问Cookie的。如“www.aspxfans.com”和“book.aspxfans.com”两个服务器之间的网页就不能互相访问Cookie。可以通过设置Cookie域的方法让“www.aspxfans.com”和“book.aspxfans.com”两个服务器之间的网页互相访问Cookie。

  ●     安全:在默认情况下,Cookie信息的传递使用的是没有加密的明码传递方式,如果Cookie中的信息比较重要,这就要求对Cookie信息进行加密。如果将Cookie的secure设为true,那么该Cookie就只能在HTTPS或其他安全协议中传输,可以增加安全性。

17.1.4  使用Cookie的注意事项

Cookie的使用范围很广,但是在使用Cookie时,有以下几个方面必须要注意:

  ●     一个网页可以创建多个Cookie,但多个Cookie可能会放在同一个cookie文件中。

  ●     每个Cookie所存放的数据不能超过4KB。

  ●     每个Cookie文件中存储的Cookie个数不能超过300个。

  ●     每个域可以创建的Cookie文件不能超过20个。

  ●     浏览器可以通过设置来接受或拒绝访问Cookie。

  ●     虽然浏览器可以禁止网页访问非本网站(或域)所创建的Cookie,但是由于Cookie是以文件的形式存放在客户端计算机中的,因此,可以使用第三方工具来查看和修改Cookie文件中的内容。

<!-- page -->

猜你喜欢

转载自micheal19840929.iteye.com/blog/563728
今日推荐