收藏 分享(赏)

JavaScript中cookie的使用详细分析.pdf

上传人:精品资料 文档编号:10856365 上传时间:2020-01-15 格式:PDF 页数:10 大小:166.59KB
下载 相关 举报
JavaScript中cookie的使用详细分析.pdf_第1页
第1页 / 共10页
JavaScript中cookie的使用详细分析.pdf_第2页
第2页 / 共10页
JavaScript中cookie的使用详细分析.pdf_第3页
第3页 / 共10页
JavaScript中cookie的使用详细分析.pdf_第4页
第4页 / 共10页
JavaScript中cookie的使用详细分析.pdf_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、js 中 cookie 的使用详细分析 JavaScript 中的另一个机制: cookie,则可以达到真正全局变量的要求。 cookie 是浏览器 提供的一种机制,它将 document 对象的 cookie 属性提供给 JavaScript。可以由JavaScript 对其进行控制,而并不是 JavaScript 本身的性质。 cookie 概述 在上一节,曾经利用一个不变的框架来存储购物栏数据,而商品显示页面是不断变化的,尽管这样能达到一个模拟 全局变量的功能,但并不严谨。例如在导航框架页面内右击,单击快捷菜单中的【刷新】命令,则所有的 JavaScript 变量都会丢失。因此,要实现严

2、格的 跨页面全局变量,这种方式是不行的, JavaScript 中的另一个机制: cookie,则可以达到真正全局变量的要求。 cookie 是浏览器提供的一种机制,它将 document 对象的 cookie 属性提供给 JavaScript。可以由 JavaScript 对其进行控制,而并不是 JavaScript 本身的性质。 cookie 是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie 可用。因此, cookie 可以跨越一个域名下的多个网页,但不能跨越多个域名使用。 不同的浏览器对 cookie 的实现也不一样,但其性质是相同的

3、。例如在 Windows 2000 以及Windows xp 中, cookie 文件存储于 documents and settingsuserNamecookie文件夹下。通常的命名格式为: userNamedomain.txt。 cookie 机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点。它可以用于以下几种场合。 ( 1)保存用户登录状态。例如将用户 id 存储于一个 cookie 内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie 还可以设置过期时间,当超过时间期限后, cookie 就会自动消失。因此,系统往往

4、可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。 ( 2)跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了 cookie 后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便。 ( 3)定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用 cookie 来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问 的界面风格。 (

5、 4)创建购物车。正如在前面的例子中使用 cookie 来记录用户需要购买的商品一样,在结账的时候可以统一提交。例如淘宝网就使用 cookie 记录了用户曾经浏览过的商品,方便随时进行比较。 当然,上述应用仅仅是 cookie 能完成的部分应用,还有更多的功能需要全局变量。 cookie的缺点主要集中于安全性和隐私保护。主要包括以下几种: ( 1) cookie 可能被禁用。当用户非常注重个人隐私保护时,他很可能禁用浏览器的 cookie 功能; ( 2) cookie 是与浏览器相关的。这意味着即使访问的是 同一个页面,不同浏览器之间所保存的 cookie 也是不能互相访问的; ( 3) c

6、ookie 可能被删除。因为每个 cookie 都是硬盘上的一个文件,因此很有可能被用户删除; ( 4) cookie 安全性不够高。所有的 cookie 都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。 设置 cookie 每个 cookie 都是一个名 /值对,可以把下面这样一个字符串赋值给 document.cookie: document.cookie=“userId=828“; 如果要一次存储 多个名 /值对,可以使用分号加空格( ; )隔开,例如: document.cookie=“userId=828; userName=hulk“; 在

7、cookie 的名或值中不能使用分号( ;)、逗号( ,)、等号( =)以及空格。在 cookie 的名中做到这点很容易,但要保存的值是不确定的。如何来存储这些值呢?方 法是用 escape()函数进行编码,它能将一些特殊符号使用十六进制表示,例如空格将会编码为 “20%”,从而可以存储于 cookie 值中,而且使用此 种方案还可以避免中文乱码的出现。例如: 复制代 码 代码如下 : document.cookie=“str=“+escape(“I love ajax“); 相当于: 复制代 码 代码如下 : document.cookie=“str=I%20love%20ajax“; 当使

8、用 escape()编码后,在取出值以后需要使用 unescape()进行解码才能得到原来的 cookie 值,这在前面已经介绍过。 尽管 document.cookie 看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变它的赋值并不意味着丢失原来的值,例如连续执 行下面两条语句: 复制代 码 代码如下 : document.cookie=“userId=828“; document.cookie=“userName=hulk“; 这时浏览器将维护两个 cookie,分别是 userId 和 userName,因此给 document.cookie 赋值更像执行类似这样的语句:

9、复制代 码 代码如下 : document.addCookie(“userId=828“); document.addCookie(“userName=hulk“); 事实上,浏览器就是按照这样的方式来设置 cookie 的,如果要改变一个 cookie 的值,只需重新赋值,例如: document.cookie=“userId=929“; 这样就将名为 userId 的 cookie 值设置为了 929。 获取 cookie 的值 下面介绍如何获取 cookie 的值。 cookie 的值可以由 document.cookie 直接获得: var strCookie=document.coo

10、kie; 这将获得以分号隔开的多个名 /值对所组成的字符串,这些名 /值对包括了该域名下的所有 cookie。例如: 复制代 码 代码如下 : 从输出可知,只能够一次获取所有的 cookie 值,而不能指定 cookie 名称 来获得指定的值,这正是处理 cookie 值最麻 烦的一部分。用户必须自己分析这个字符串,来获取指定的 cookie 值,例如,要获取 userId 的值,可以这样实现: 复制代 码 代码如下 : 这样就得到了单个 cookie 的值。 用类似的方法,可以获取一个或多个 cookie 的值,其主要的技巧仍然是字符串和数组的相关操作。 给 cookie 设置终止日期 到现

11、在为止,所有的 cookie 都是单会话 cookie,即浏览器关闭后这些 cookie 将会丢失,事实上这些 cookie 仅仅是存储在内存中,而没有建立相应的硬盘文件。 在实际开发中, cookie 常常需要长期保存,例如保存用户登录的 状态。这可以用下面的选项来实现: document.cookie=“userId=828; expires=GMT_String“; 其中 GMT_String 是以 GMT 格式表示的时间字符串,这条语句就是将 userId 这个 cookie设置为 GMT_String 表示的过期时间,超过这个时间, cookie 将消失,不可访问。例如:如果要将 c

12、ookie 设置为 10 天后过期,可以这样实现: 复制代 码 代码如下 : 删除 cookie 为了删除一个 cookie,可以将其过期时间设定为一个过去的时间,例如: 复制代 码 代码如下 : 指定可访问 cookie 的路径 默认情况下,如果在某个页面创建了一个 cookie,那么该页面所在目录中的其他页面也可以访问该 cookie。如果这个目录下还有子目录,则在子目录中也可以访问。例如在 中所创建的 cookie,可以被 或 html/ some/c.html 所访问,但不能被 访问。 为了控制 cookie 可以访问的目录,需要使用 path 参数设置 cookie,语法如下

13、: document.cookie=“name=value; path=cookieDir“; 其中 cookieDir 表示可访问 cookie 的目录。例如: document.cookie=“userId=320; path=/shop“; 就表示当前 cookie 仅能在 shop 目录下使用。 如果要使 cookie 在整个网站下可用,可以将 cookie_dir 指定为根目录,例如: 复制代 码 代码如下 : document.cookie=“userId=320; path=/“; 指定可访问 cookie 的主机名 和路径类似,主机名是指同一个域下的不同主机,例如: 和 就

14、是两个不同的主机名。默认情况下,一个主机中创建的 cookie 在另一个主机下是不能被访问的,但可以通过 domain 参数来实现对其的控制,其语法格式为: document.cookie=“name=value; domain=cookieDomain“; 以 google 为例,要实现跨主机访问,可以写为: document.cookie=“name=value;domain=“; 这样,所有 下的主机都可以访问该 cookie。 综合示例:构造通用的 cookie 处理函数 cookie 的处理过程比较复杂,并具有一定的相似性。因此可以定义几个函数来完成 cookie的通用操作,从而实

15、现代码的复用。下面列出了常用的 cookie 操作及其函数实现。 1添加一个 cookie: addCookie(name,value,expireHours) 该函数接收 3 个参数: cookie 名称, cookie 值,以及在多少小时后过期。这里约定 expireHours 为 0 时不设定过期时间,即当浏览器关闭时 cookie 自动消失。该函数实现如下: 复制代 码 代码如下 : 0) var date=new Date(); date.setTime(date.getTime+expireHours*3600*1000); cookieString=cookieString+“; expire=“+date.toGMTString(); document.cookie=cookieString; / 2获取指定 名称的 cookie 值: getCookie(name) 该函数返回名称为 name 的 cookie 值,如果不存在则返回空,其实现如下: 复制代 码 代码如下 : 3删除指定名称的 cookie: deleteCookie(name) 该函数可以删除指定名称的 cookie,其实现如下: 复制代 码 代码如下 :

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报