一、什么是Cookie
Cookie是在Web上用于存储客户系统信息的对象。所有的信息都
以每行一个Cookie的形式存放在客户端的一个名为cookies.txt的文
件里。Cookie在HTTP头标(客户和服务器用来标识自身的分组)中在客
户机与服务器之间传输。
Cookie由某个WWW网页在某客户机上进行设置。比如,某个WWW网
页已在一个用户的计算机上设置了一个Cookie,其中存储的信息是该
用户的身份号(随机赋予该用户的唯一标识),当该用户的浏览器连接
该WWW站点时,站点要求浏览器将Cookie送回,他的身份号就通过Cooki
e 传递给该网页所在的WWW服务器。服务器上的一个CGI程序查找一个
服务器端的文件以确定关于他的预设内容。
当某个服务器在客户的计算机上设置Cookie后,请注意如果要让C
ookie信息确实写入文件,必须关闭浏览器。在浏览器未关闭之前,任
何新的或变化的Cookie都存放在内存中。
二、Cookie的特性
每个Cookie包含有6个元素,常用的有:name、value、expires、d
omain和secure。这些元素存放了这个Cookie的作用范围及实际的数
据。
1.name 这是每一个Cookie必须有的元素,它是该Cookie的名字
。name元素是一个不含分号、逗号和空格的字符串。其命名方式与变
量命名相同。
2.value value也是每个Cookie必须有的元素,它是该Cookie的
值。value元素是实际存放于Cookie中的信息。它是由任何字符构成
的字符串。
3.expires expires是一个Cookie的过期时间。没有设置expire
s元素的Cookie在用户断开连接后过期,但在用户关闭浏览器之前Cook
ie依然存在。
Cookie有一个过期时间并等于它会从Cookie.txt文件中被删除。
在它的位置被用来存放另一个Cookie前,它依然存在着。过期的Cooki
e只是不被送往要求使用它的服务器。
expire是一个串,它的形式如下:
Wdy, DD-Mon-YY HH:MM:SS GMT
expires元素是可选的。
4.domain domain是设置某个Cookie的Web网页所在的计算机的
域名。这样,由一个站点创建的Cookie不会影响到另一个站点上的程
序。对于较高层的域名如.com, .edu,或.mil,域名中至少有两个分隔
符(.)。而对于较低层的域名如.cn, .uk或.ca,域名中至少有3个分隔
符。demain元素自动地被设为网页所在站点的基本域名。比如,你的
网页位于http://www.dsc ga.com/~user,则该网页创建的Cookie缺
省地对域dscga.com有效。如果你希望你的Cookie 只应用于服务器ww
w3.dscya.com,那么你必须在设置Cookie的时候指定。
只有拥有域名的站点才能为那个域名设置Cookie
5.path 一个Cookie可以被指定为只针对一个站点的某一层次。
如果一个Web站点要区分已注册的和未注册的客户,就可以为已经注册
的客户设置Cookie,当注册过的客户访问该站点时,他就可以访问到只
对注册客户有效的页面。
path是可选项,如果没有指定path,将被缺省地设置为设置Cookie
的页面的路径。
6.secure标志 secure是一个布尔值(真或假)。它的缺省值为假
。如果它被设为真值, 这个Cookie只被浏览器认为是安全的服务器所
记住。
三、关于Cookie的一些限制
一个站点能为一个单独的客户最多设置20个Cookie。如果一个站
点有两个服务器(如ww w.dscga.com和www3.dscga.com)但没有指定域
名,Cookie的域名缺省地是dscga.com。如果指定了确切的服务器地址
,则每个站点可以设置20个Cookie--而不是总共20个。不仅每个服务
器能设置的Cookie数目是有限的,而且每个客户机最多只能存储300个
Cookie。如果一个客户机已有300个Cookie,并且一个站点在它上面又
设置了一个新Cookie,那么,先前存在的某一个Cookie将被删除。
每个Cookie也有自身的限制。Cookie不得超过4KB(4096bytes),
其中包括名字和其他信息。
四、JavaScript和Cookie
现在大家已经了解有关Cookie的一些基本概念了,让我们更进一
步讨论Cookie。可以用JavaScript来很方便地编写函数用来创建、读
取和删除Cookie。下面,我们就介绍这些函数
1.创建Cookie
我们要进行的第一件事就是要创建一个Cookie。下面给出的SctC
ookie()函数将完成这一功能。
function SetCookit (name, value) {
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(argc>2)?argv[2]: null;
var path=(argc>3)? argv[3]: null;
var domain=(argc>4)? argv[4]: null;
var secure=(argc>5)? argv[5]: false;
document.Cookie=name+"="+escape
(value)+
((expires==null)?"":(";expires="
+expires.toGMTString()))+
((path==null)?"":(";path="+path))+
((domain==null)?"":(";domain="+
domain))+
((secure==true)?";secure":"");
}
SetCookie()只要求传递被设置的Cookie的名字和值,但如果必要
的话你可以设置其他4 个参数而不必改变这个函数。可选的参数必须
用正确的次序使用。如果不想设置某个参数, 必须设置一个空串。比
如,如果我们创建的一个Cookie需要指定secure域,但不想设置expir
es, patb或domain,就可以像这样调用SetCokie(): SetCookie("MyN
ewCookie","MyValue" ,"",","tyue);
2.读取Cookie
下面给出的函数GetCookie()用来读取一个Cookie。当一个Cooki
e的请求被客户机收到时,该客户机查找它的cookies.txt文件以进行
匹配。这个函数首先匹配这个Cookie的名字。如果有多个同名的Cook
ie,它再匹配路径。函数完成匹配后返回这个Cookie的值。如果客户
机中没有这个Cookie,或者路径不匹配,该函数返回一个NULL。
function GetCookie(name) {
var arg=name+ "=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen) {
var j=i+alen;
if(document.cookie.substring(i,j)
==arg)
return getCookieVal(j);
i=document.cookie.indexOf("",i)+1;
if(i==0)break;
}
return null;
}
函数中使用了getCookieVal()函数,它是GetCookie()函数的补充
。getCookieVal()将C ookies.txt文件分解为片断,并从一批Cookie
中读出正确的Cookie。该函数的实现如下:
function getCookieVal(offset) {
var endstr=document.cookie.indexOf
(";",offset);
if(endstr==-1) //没有指定其他元素
endstr=document.cookie.length;
return unescape(document.cookie.substring
(offset,endstr));
}
3.删除Cookie
删除一个Cookie很简单,只需将它的过期时间设为NULL。当用户
断开连接后,这个Cooki e就过期了(没有过期时间的Cookie将在浏览
器关闭时被删除)。下面的函数DeleteCookie() 说明了如何删除一个
Cookie:
function DeleteCookie(name) {
var exp=new Date();
exp.setTime(exp.getTime()-1);
//将exp设为已过期的时间
var cval=GetCookie(name);
document.cookie=name+"="+cval+";
expires="+exp.toGMTString();
}
五、Cookie的应用举例
Cookie能够存储与某个独立的web页面相关的特定用户的信息,这
使得Cookie具有强大的功能。以下举出了Cookie的一些用途:
·指出一个用户已对一个网页进行访问的次数
·提醒用户自上次看这个网页后,该网页已发生变化
·在联机订购系统中使用Cookie来记住一个客户想要买些什么,
即可以把Cookie看成是一个"购物筐"。客户可能选好了物品后由于某
种原因离开了联机订购系统,当他下一次再连接该系统时,他会发现它
的"购物筐" 依然有上次选好的物品。
·记住一个用户想要看你网页的有页框还是无页框的版本。
下面,我们实现前两个功能。
1.记住一个用户对一个网页进行访问的次数
这个例子可以指出一个用户访问网页的次数。它通过使用一个Co
okie来存储连接双方的值来完成。
<html>
<head>
<script language="JavaScript">
<!--hide from nonJavaScript browsers
function getCookieVal(offset){
//函数getCookie()的说明
}
function GetCookie (name) {
//函数GetCookie()的说明
}
function SetCookie (name,value) {
//函数SetCookie()的说明
}
function DeleteCookie(name){
//函数DeleteCookie()的说明
}
var expdate=new Date();
var numvisits;
expdate.setTime(expdate.getTime()
+(5*24*60*60*1000));
if(!(numvisits=GetCookie("num
visits"))) numvisits=0;
numvisits++;
SetCookie("numvisits",numvisits,
expdate);
document.write("Thank you for visiting
us.<br>");
document.write("You have loaded this page
<font size=5>"+numvisits+"
</font> times.<br>");
//end hide->
</script>
</html>
注意语句
if(!(numvisits=GetCookie
("numvisits")))numvisits=0
如果想获取一个Cookie的值而这个Cookie又不存在,解释器将返
回一个numvisits is u n
defined的错误。你可以使用NOT(!)操作符来消除这个问题。
2.提醒用户网页已经发生了变化
下面的例子中使用一个Cookie来确定自从上次访问后一个页
面是否已经改变。
<html>
<head>
</head>
<script language="JavaScript">
<!--hide from nonJavaScript browsers
function getCookieVal (offset) {
//函数getCookieVal()的说明
}
function GetCookie(name) {
//函数GetCookie()的说明
}
function SetCookie (name,value) {
//函数SetCookie()的说明
}
function DeleteCookie(name) {
//函数DeleteCookie()的说明
}
var cookie-data=new Date
(document.lastModified);
var expdate=new Date();
expdate.setTime(expdate.getTime()+
(5*24*60*60*1000));
document.write("This page last updated
on:"+document.lastModified);
document.write("<br>");
if(!(cookie-data==GetCookie("cookie-
date"))){
SetCookie("cookie-date",cookie-
date,expdate);
document.write("<font color='Red'>
This page has changed since your last
visit!</font><br>");
}
// end hide->
</script>
</html>
程序中检查Cookie是否存在的方法与前面一个例子相同。但在这
儿,我们将Cookie的值设为一个日期而不是一个整数,并把位于Cookie
中的值document.lastModified与前页面的d oument.lastModified值
相比较。如果它们相同,页面就不发生变化,否则,这个Cookie的值将
被重新设置,并且浏览器将提醒用户页面已发生变化。
--
※ 来源:.南大小百合信息交换站 bbs.nju.edu.cn.[FROM: hsia.nju.edu.cn]
本文作者:未知 文章出处:未知 文章性质:原创 阅读次数:997 发布日期:2005-09-12
|
相关推荐
javascript 操作cookiejavascript 操作cookiejavascript 操作cookie
接下来,我们来创建一个名为`CookieManager`的JavaScript类,用于封装Cookie的操作。这个类需要包含以下方法: 1. **setCookie**:用于设置Cookie。需要传入键(key)、值(value)以及可选的过期时间(days)和...
javascript对cookie的日常操作
本文将详细探讨如何在C#后端和JavaScript前端中操作Cookie。 首先,C#在ASP.NET中处理Cookie主要通过`HttpCookie`类。创建一个Cookie的基本步骤如下: 1. **创建Cookie对象**:使用`new HttpCookie(string name)`...
总结一下,XCookie是一个实用的JavaScript库,用于简化浏览器cookie的管理工作,它提供了一组易于理解和使用的API,涵盖了创建、读取、更新和删除cookie的各种操作。了解和掌握这个框架将有助于提高前端开发的效率,...
- 在使用JavaScript操作Cookie时需要注意跨域问题,确保设置的路径和域名正确。 - 对于安全敏感的信息,建议使用`secure`属性确保Cookie只能通过HTTPS协议传输。 - 在现代Web开发中,为了提高安全性,可以考虑使用...
"CookiejsJavaScript客户端的Cookie操作库" 指的是一种JavaScript库,专门用于在客户端(即用户浏览器)进行Cookie的操作。Cookiejs是这个库的名称,它提供了一组简单易用的API,帮助开发者方便地管理用户的Cookie。...
JavaScript作为浏览器端的主要脚本语言,提供了操作Cookie的功能。本文将详细介绍如何使用JavaScript实现Cookie的增删改查操作。 首先,理解Cookie的基本概念是必要的。Cookie由服务器端设置,并发送到用户的浏览器...
javascript实现操作cookie实现的可记忆菜单
### 知识点二:JavaScript操作Cookie的方法 在JavaScript中,我们可以直接通过操作`document.cookie`来读取和写入cookie值。不过这种方式较为原始,不方便维护和扩展。为了更好地管理cookie,我们可以封装一些方法...
#### JavaScript操作Cookie的基本技巧 ### 一、设置Cookie 设置Cookie通常包括添加和修改功能。如果原有的Cookie名称已经存在,则添加此Cookie就相当于修改了此Cookie。设置Cookie时还可能包含一些额外的选项,例如...
JavaScript是Web开发中的重要脚本语言,用于处理客户端的交互逻辑。在网页中实现Cookie功能是JavaScript的一个...通过学习和掌握JavaScript操作Cookie的方法,可以更好地理解和实践Web开发中的用户状态管理和会话管理。
随着浏览器技术的发展,Chrome引入了一种新的API——`cookieStore`,它提供了更加便捷和安全的方式来操作Cookie。 1. 平时如何操作Cookie 通过`document.cookie`,我们可以实现对Cookie的读取、设置和删除。例如:...
我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的操作Cookie变得尤为重要。使用原生JS操作方法在上篇文章中已经写过,原生JS虽然更简单,但是操作...
通过以上三种操作Cookie的方法,开发者可以利用JavaScript在浏览器端灵活地管理Cookie。需要注意的是,Cookie的大小有限制,通常不超过4KB,并且在使用Cookie时还需要考虑用户隐私和安全的问题,避免存储敏感信息。...
JavaScript提供了操作Cookie的原生方法,能够实现创建Cookie和读取Cookie的功能。以下详细知识点将围绕JavaScript中如何创建和读取Cookie来进行深入介绍。 ### 创建Cookie 创建Cookie的基本语法非常简单,只需要对...
你可以打开这个示例,了解在实际场景中如何使用JavaScript操作Cookie。 总结,了解和掌握JavaScript中的Cookie操作对于Web开发人员来说是必不可少的技能,它能帮助我们实现用户会话管理、个性化设置等功能。通过本...
4. **操作Cookie的JavaScript方法** 在JavaScript中,我们可以通过`document.cookie`属性来读取和设置Cookie。然而,这个属性并不直接支持设置多个参数,所以通常需要自定义函数来处理: ```javascript var ...
### JavaScript中的Cookie读、写与删除操作详解 #### 前言 在现代Web开发中,前后端分离架构越来越流行,这导致了浏览器与服务器之间的数据交换变得尤为重要。Cookie作为一种简单而有效的方式,在用户状态管理方面...