Cookie的保存和读取
在JavaScript的文档对象模型(DOM)中,Cookie对象是从属于文档对象(window.document)的子对象。其表现行为类似于一个字符串对象。如前面所说,Cookie保存的是文本信息,因此JavaScript中常将字符串或数值型变量的内容保存于其中。
在JavaScript的文档对象模型(DOM)中,Cookie对象是从属于文档对象(window.document)的子对象。其表现行为类似于一个字符串对象。如前面所说,Cookie保存的是文本信息,因此JavaScript中常将字符串或数值型变量的内容保存于其中。
•将信息保存在Cookie中的语法很简单,即直接将字符串赋值给该对象:
•window.document.cookie = “需要保存的信息”
•window.document.cookie = ”关键字=值”
•获取Cookie对象中保存的信息也很简单,可以直接将该对象作为字符串处理。例如:
•alert(document.cookie);
字符串的编码
在字符串的实际使用中,常常会遇到对其编码的限制。比如Cookie中不允许需要保存的字符串中有分号“;”出现。有些操作系统,在解释中文的字符串时常常出现乱码的现象。这些都需要程序员想办法避免储存数据中出现非英文字母、非数字的字符。
字符串的编码
在字符串的实际使用中,常常会遇到对其编码的限制。比如Cookie中不允许需要保存的字符串中有分号“;”出现。有些操作系统,在解释中文的字符串时常常出现乱码的现象。这些都需要程序员想办法避免储存数据中出现非英文字母、非数字的字符。
•JavaScript提供了内置的编码和解码函数,用来将非英文的字符编码或解码。编码函数为“escape”,使用的语法为:
•codedString = escape(originalString);
•其作用为,将参数字符串“originalString”中的特殊字符(绝大多数的非英文字母、非数字的字符)替换为“%”加上该字符unicode编码的两位十六进制字符,或“%u”加上该字符unicode编码的四位十六进制字符(视该字符的编码而定)。
•函数“unescape”与“escape”相反,用于将“escape”编码后的字符串解码还原为原始的字符串。其语法为:
•originalString = unescape(codedString);
Cookie作为网站保存在客户端电脑上的小段文本信息,不可能永远的存在下去,其有着一定的生存周期。当过期后,浏览器会自动的删除该Cookie。Cookie还有着域和路径的属性,用来标识不同的Cookie。浏览器在访问网页的时候,会自动根据网页的URL决定所需发送的Cookie。这些Cookie的属性不可以直接访问,只能在设置某一Cookie的时候设置。
Cookie的有效期和清除
•Cookie的有效期、域和路径
Cookie作为网站保存在客户端电脑上的小段文本信息,不可能永远的存在下去,其有着一定的生存周期。当过期后,浏览器会自动的删除该Cookie。Cookie还有着域和路径的属性,用来标识不同的Cookie。浏览器在访问网页的时候,会自动根据网页的URL决定所需发送的Cookie。这些Cookie的属性不可以直接访问,只能在设置某一Cookie的时候设置。
Cookie的有效期和清除
•Cookie的有效期在不设置的情况下,当用户关闭浏览器时即被删除。设置有效期后,浏览器会自动识别Cookie的状态是否过期。JavaScript中,设置Cookie的有效期很简单,只需要在设置Cookie的时候,在需保存的值后用分号“;”隔开,加上形如“expires=过期日期字符串”的字段就可以了。这也是为什么在Cookie所保存的信息字符中不可以有分号“;”的原因:系统需要保留该字符来分隔信息主体和附加的有效期等内容。“过期日期字符串”可以为多种形式,都可以被浏览器自动的理解。例如下面的语法都是可以的:
•document.cookie = “姓名=妞妞; expires = Mon, 31 Dec 2007 17:41:11 UTC”;
•document.cookie = “姓名=成头; expires = 2008年1月1日 1:42:12”;
•document.cookie = “姓名=青青; expires = 2008/1/1 1:42:12”;
•Cookie的域和路径及Cookie欺骗
•Cookie有着域的属性,浏览器和服务器通信时,仅将所访问主机对应的域的Cookie发送给该主机。服务器在通知浏览器设置Cookie的时候,浏览器自动的将该Cookie保存在该服务器的域名下,从而避免出现Cookie泄漏、将某一网站的Cookie发送给另一个网站的错误。譬如,当用户打开“http://mail.163.com”和“http://www.google.cn”的时候,“document.cookie”具有着不同的内容,如图所示。