详细介绍JavaScript中的cookie

以前,JavaScript完全不与服务器进行任何交互。它有时在客户端进行少量操作,然后让服务器来完成其他任务。然而,随着Web的发展,也要求JavaScript能向服务器发送数据,接受响应,在这种需求下就产生两种与服务器通信的方法:cookie与HTTP请求。

在沧县等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站制作 网站设计制作按需开发,公司网站建设,企业网站建设,品牌网站制作,网络营销推广,外贸网站建设,沧县网站建设费用合理。

cookie其实就是网站放在用户机器上的一小块信息,cookie对于用户来说是唯一的,网站可判断用户上次访问网站的时间,以及他访问了哪些页面,可用于在某个网站跟踪你访问的页面,但无法用它来获取个人信息。cookie是第一个JavaScript可以利用的客户端—服务器端之间的交互手段。浏览器向服务器发送请求时,为这个服务器存储的cookie会与其他信息一起发送到服务器。

(一) cookie的组成

1、名称

每一个cookie由一个唯一的名称代表。这个名称可以包含字母、数字和下划线。与JavaScript的变量不同,cookie的名称是不区分大小写的。建议将cookie名字认为是区分大小写的,因为有些服务器端软件是区分大小写的。

2、值

保存在cookie中的字符串值。这个值在存储之前必须用encodeURIComponent()对其进行编码,以免丢失了数据或占用了cookie。名称和值加起来的字节数不能超过4KB。

3、域

出于安全考虑,网站不能访问由其他域创建的cookie。创建cookie后,域的信息会作为cookie的一部分存储起来。

4、路径

另一个cookie的安全特性,路径限制了对Web服务器上的特定目录的访问。例如,可指定cookie只能从http://www.yiiiyaa.net/category中访问,这样就不能访问http://www.yiiyaa.net/上的网页了,尽管都在同一个域中。

5、失效日期

cookie何时应该被删除。默认情况下,关闭浏览器,时即将cookie删除;不过,也可以自己设置删除时间。这个值是GMT格式的日期,用于指定应该删除cookie的准确时间。因此,cookie可以浏览器关闭后依然保存在用户的机器上。如果你设置的失效日期是个以前的时间,则cookie被立即删除。

6、安全标志

一个true/false值,用于表示cookie是否只能从安全网站(使用SSL和https协议的网站)中访问。可以将这个值设置为true以提供加强的保护,进而确保cookie不被其他网站访问。

(二)其他安全限制

为确保cookie不被恶意使用,浏览器还对cookie的使用进行了一些限制:

1、每个域最多只能在一台用户的机器上存储20个cookie;

2、每个cookie的总大小不能超过4096节点;

3、一台用户机器上的cookie的总数不能超过300个。
另外,一些新的浏览器还对cookie进行了严格控制,可以让用户阻止所有的cookie、阻止某些未知的网站的cookie或者在创建cookie时进行提示。

(三) JavaScript中的cookie

document对象有cookie特性,是包含所有给定页面可访问的cookie的字符串。cookie特性也很特别,因为将这个cookie特性设置为新值只会改变对页面可访问的cookie,并不会真正改变cookie(特性)本身。

要创建一个cookie,必须按照下面的格式创建字符串:

 
 
 
  1. cookie_name=cookie_value; 
  2. expires=expiration_time; 
  3. path=domain_path; 
  4. domain=domain_name; 

secure只有字符串的第一部分(指定名称和值的字符串)是对设置cookie必需的,其他部分都是可选的,然后将这个字符串复制给document.cookie特性,即可创建cookie。读取document.cookie的值即可访问这些cookie,以及所有其他可以从给定页面访问的cookie。

因为创建和读取cookie均需记住它的格式,大部分开发人员用函数用处理这些细节。创建cookie的函数很简单。

 
 
 
  1. function setCookie(sName,sValue,oExpires,sPath,sDomain,bSecure){
  2. var sCookie=sName+”=”+encodeURIComponent(sValue);
  3. if(oExpires){
  4. sCookie+=”; expires=”+oExpires.toGMTString();
  5. }
  6. if(sPath){
  7. sCookie+=”; path=”+sPath;
  8. }
  9. if(sDomain){
  10. sCookie+=”; domain=”+sDomain;
  11. }
  12. if(bSecure){
  13. sCookie+=”; secure”;
  14. }
  15. document.cookie=sCookie;
  16. }

这个函数可以根据传入的参数建立cookie字符串。因为只有前两个参数是必需的。所以函数在把参数传给cookie字符串前,要对参数进行检测,以确保前两个参数是存在的。

下一个函数getCookie(),通过传入的名称获取cookie的值:

 
 
 
  1. function getCookie(sName){
  2. var sRE=”(?:; )?”+sName+”=([^;]*);?”;
  3. var oRE=new RegExp(sRE);
  4. if(oRE.test(document.cookie)){
  5. return decodeURIComponent(RegExp[“$1”]);
  6. }else{
  7. return null;
  8. }
  9. }

这个函数使用了通过cookie名称建立的正则表达式。由于cookie字符串的格式,正则表达式是从document.cookie中抽取特定值最方便的方法。如果只有一个cookie,字符串就只有一个名称和值,而值就是等于号后面的所有字符,如果后面还有cookie,则用分号进行分隔,也就是说cookie的值包含等于号之后,分号之前的所有字符串。

最后一个函数deleteCookie(),用于从系统中立即删除一个cookie。将cookie的失效时间设置为过去的一个时间即可实现。

 
 
 
  1. function deleteCookie(sName,sPath,sDomain)
  2. {
  3. setCookie(sName,””,new Date(0),sPath,sDomain);
  4. }

有了以上这些函数,就可以很方便的地设置、读取、设置cookie了。

本文地址:http://www.yiiyaa.net/

网站标题:详细介绍JavaScript中的cookie
文章网址:http://www.36103.cn/qtweb/news49/16899.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联