ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>三级视频网站在线,91精品国产综合久久香蕉的特点 ,性久久久久久久http://www.aygfsteel.com/shaojava/zh-cnWed, 23 Jul 2025 05:58:08 GMTWed, 23 Jul 2025 05:58:08 GMT60js cookieæ€È»“http://www.aygfsteel.com/shaojava/archive/2009/11/23/303307.htmljava夜未çœ?/dc:creator>java夜未çœ?/author>Mon, 23 Nov 2009 03:09:00 GMThttp://www.aygfsteel.com/shaojava/archive/2009/11/23/303307.htmlhttp://www.aygfsteel.com/shaojava/comments/303307.htmlhttp://www.aygfsteel.com/shaojava/archive/2009/11/23/303307.html#Feedback0http://www.aygfsteel.com/shaojava/comments/commentRss/303307.htmlhttp://www.aygfsteel.com/shaojava/services/trackbacks/303307.html         最˜q‘需要用FSO操作文äšgåQŒæœ‰˜q™æ ·ä¸€ä¸ªéœ€æ±‚,用js操纵cookie保存用户上次一打开文äšgçš„èµ\径,发现用js操作cookie和用服务器语­a€æ“ä½œcookie有一些差异,˜q˜æœ‰å¾ˆå¤šž®çš„¾l†èŠ‚éœ€è¦æ³¨æ„ï¼Œå¦‚æžœ˜qç”¨ä¸å¾—当会(x¨¬)引发很多不可预料的结果。当我遇到问题的时候在¾|‘上查了很多˜q™æ–¹é¢çš„资料åQŒå‘现好多都是简单以理论的方式介¾läº†js如何操作cookie。但我照着做却发现有些地方æ ÒŽ(gu¨©)œ¬ž®×ƒ¸æ˜¯è¿™ä¹ˆå›žäº‹ï¼Œä¸‹é¢æˆ‘æ€È»“了我在用js操作cookie的一些经验ã€?

         用js操纵cookie是通过document对象下的cookie对象åQŒå…¶å®ždocument.cookiež®±æ˜¯å­—符ä¸ÔŒ¼Œ
所以我们ä‹É用它?y¨­u)®±åƒä½¿ç”¨å­—ç¬¦ä¸²ä¸€æ øP¼Œå¯ä»¥ä½¿ç”¨å­—符串的所有方法,只不˜q‡è¿™ä¸ªå­—½W¦ä¸²éœ€è¦æœ‰ä¸ªæ ¼å¼?key=value),讄¡½®cookie的示例代码如ä¸?/p>

         document.cookie="key=escape(value)";

         cookieçš„å€ég¸èƒ½ä‹Éç”¨åˆ†åøP¼ˆ;åQ‰ã€é€—号åQ?åQ‰ã€ç­‰åøP¼ˆ=åQ‰ä»¥å?qi¨¢ng)空根{€‚在cookie的名中做到这点很å®ÒŽ(gu¨©)˜“åQŒä½†è¦ä¿å­˜çš„值是不确定的。如何来存储˜q™äº›å€¼å‘¢åQŸæ–¹ 法是用escape()函数˜q›è¡Œ¾~–码åQŒå®ƒèƒ½å°†ä¸€äº›ç‰¹ŒDŠç¬¦å·ä‹É用十六进制表½Cºï¼Œä¾‹å¦‚½Iºæ ¼ž®†ä¼š(x¨¬)¾~–码ä¸?#8220;20%”åQŒä»Žè€Œå¯ä»¥å­˜å‚¨äºŽcookieå€ég¸­åQŒè€Œä¸”使用æ­?¿Uæ–¹æ¡ˆè¿˜å¯ä»¥é¿å…ä¸­æ–‡ä¹Þq çš„出现。value上ä‹É用了escapeæ–ÒŽ(gu¨©)³•。在取值的时候需要unescape(value)对value再进行è{码即可ã€?/p>

          如果惌™®¾¾|®å¤šä¸ªcookie需要多‹Æ¡ä‹É用这æ ïL(f¨¥ng)š„æ–ÒŽ(gu¨©)³•。正¼‹®çš„讄¡½®æ–ÒŽ(gu¨©)³•是:(x¨¬)
          document.cookie="key=escape(value)";
          document.cookie="key1=escape(value1)"
          而不æ˜?br />           document.cookie="key=escape(value);key1=escape(value1)";

         如果惛_–出cookieçš„å€û|¼Œå¯ä»¥ç›´æŽ¥è°ƒç”¨document.cookie获得åQŒå¦‚果有多个å€û|¼Œå¤šä¸ªå€¼ç”¨åˆ†å·(;)分隔åQŒæ¯ä¸ªå€¼ç”¨½{‰å·(=)分隔åQŒæˆ‘们可以对cookie先按照分å?;)˜q›è¡Œåˆ†éš”(split)åQŒç„¶åŽå†æŒ‰ç­‰å?=)分隔(split)。然后åó@环比较keyçš„å€û|¼Œå¦‚æžœkey相等åQŒåˆ™å–出value。需要注意一点,如果有多个å€û|¼Œ½W¬äºŒä¸ªå€¼çš„key值前面多一个空æ û|¼Œéœ€è¦åŽ»é™¤ã€‚ä¸‹é¢æˆ‘¾l™å‡ºèŽ·å–cookie的示例代ç ?/p>

          function getCookie(key){
                var aCookie = document.cookie.split(";");
                for (var i=0; i < aCookie.length; i++){  
                          var aCrumb = aCookie[i].split("=");  
                          if (key === aCrumb[0].replace(/^\s*|\s*$/,"")){   
                                           return unescape(aCrumb[1]);
                          }  
                } 
           }

          ¾lè¿‡å‰é¢çš„示例代码在一个页面设¾|®cookie后在˜q™ä¸ª™åµé¢ä¹Ÿèƒ½å–到åQŒä½†æ˜¯cookie存在哪里了。通常情况下,cookieä¼?x¨¬)存攑֜¨C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files目录下。但是我们删除了˜q™ä¸ªæ–‡äšg夹下的所有文件后åQŒå†èŽ·å¾—cookie,˜q˜èƒ½å¤Ÿè®¿é—®åˆ°ã€‚关闭浏览器后,再次打开‹¹è§ˆå™¨åŽ˜q˜èƒ½èŽ·å¾—åˆ°cookie。那cookie的默认生存期是多久呢。怎么才能清除cookie呢。非常抱歉,我也不知道存哪了åQŒä½†æ˜¯åªè¦æ³¨é”€æˆ–重启之后,讄¡½®çš„cookiež®†é”€æ¯ã€‚我个ähè®¤äØ“(f¨´)˜q™æ˜¯è®¾è®¡jsçš„cookie的一个bug.因䨓(f¨´)用户不能够通过一¿Uæ–¹å¼åŠ(qi¨¢ng)时清除cookieæ˜¯éžå¸æ€¸å‹å¥½çš„。我们可以通过讄¡½®cookie时可以传递一个属性expiresåQŒè¯¥å±žæ€§çš„作用是设¾|®cookie的生存期。设¾|®cookie的生存期的示例代码如下:(x¨¬)

      var liveDate = new Date();
      liveDate.setTime(liveDate.getTime() + 3*24*60*60*1000);
      document.cookie="name=test;expires=" + liveDate.toGMTString();
      上面代码讄¡½®cookieçš„name的存?g¨°u)zÀL—¶é—´äØ“(f¨´)3天。删除cookie的值就是设¾|®expires一个过期的旉™—´å›_¯åQŒç¤ºä¾‹ä»£ç å¦‚ä¸?br />       var liveDate = new Date();
      liveDate.setTime(liveDate.getTime() - 10000);
      document.cookie = "name=test;expires=" + date.toGMTString();

      但是有趣的是åQŒè®¾¾|®äº†expires属性后åQŒæˆ‘们在C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files目录下发现有存储cookie的文件。此时我们删除该文äšg后,发现讄¡½®çš„cookie¼‹®å®žé”€æ¯äº†ã€‚这正符合我们的要求。所以徏议用js讄¡½®cookie的时候一定要讄¡½®expires属性,正常来说我们要用到cookie的时候就应该æ ÒŽ(gu¨©)®éœ€æ±‚明¼‹®è®¾è®¡cookie存活多久ã€?/p>

        下面我们再说一下js操作cookie的作用域。默认情况下js操作cookie的作用域是目录çñ”的,也就是在当前目录下设¾|®çš„cookieåQŒå½“前目录及(qi¨¢ng)该目录下的所有子目录下的所有文仉™ƒ½èƒ½å¤Ÿè®‰K—®è¯¥cookie,例如åœ?a target="_blank" eventslistuid="e3">http://localhost:8090/APPTest/aaa/testCookie.html中设¾|®çš„cookie,åœ?a target="_blank" eventslistuid="e4">http://localhost:8090/APPTest/aaa/目录下的所有文件和http://localhost:8090/APPTest/aaa/bbb/下的所有文仉™ƒ½èƒ½å¤Ÿè®‰K—®åˆ°è¿™ä¸ªcookie,而在http://localhost:8090/APPTest/目录下的文äšgž®×ƒ¸èƒ½å¤Ÿè®‰K—®è¯¥cookie。设¾|®cookie时有一个path属性能够改变cookie的有效访问èµ\径。但是目前path只能讄¡½®ä¸€ä¸ªå‚数即"/",代表是根路径。示例代码如下:(x¨¬)

         document.cookie="key=escape(value);path=/";

          å¦‚果讄¡½®äº†path="/"åQŒåˆ™ä¸ç®¡è®„¡½®cookie在哪个èµ\径,åœ?a target="_blank" eventslistuid="e7">http://localhost:8090/APPTest/
下及(qi¨¢ng)所有目录及(qi¨¢ng)子目录下都能够访问到˜q™ä¸ªcookie.理论上如果设¾|®path="\aaa",该cookie的作用域应该是aaa目录下及(qi¨¢ng)aaa目录下的所有子目录下都能够讉K—®åˆ°è¿™ä¸ªcookie,但实际上òq¶æ²¡æœ‰å®žçŽ°è¿™æ ïL(f¨¥ng)š„功能åQŒæˆ‘è®¤äØ“(f¨´)˜q™ä¹Ÿæ˜¯js实现cookie的一个bug。这里有两个问题需要注意,一是如果设¾|®ä¸¤ä¸ªåŒåçš„cookie,å¦?a target="_blank" eventslistuid="e8">http://localhost:8090/APPTest/aaa/下设¾|®äº†ä¸¤ä¸ªcookie,一个设¾|®äº†pathä¸?/"åQŒå¦ä¸€ä¸ªcookie不带path参数,那么åœ?a target="_blank" eventslistuid="e9">http://localhost:8090/APPTest/aaa/ä¼?x¨¬)访问到两个同名的cookieå€û|¼Œè€Œåœ¨è·¯å¾„ä¸?a target="_blank" eventslistuid="e10">http://localhost:8090/APPTest/只能讉K—®åˆ°å…¨å±€çš„cookie倹{€‚但是我们没有办法通过路径åŽÕdŒºåˆ†ã€‚第二个需要注意的ž®±æ˜¯åˆ é™¤cookie,如果讄¡½®cookie时带path属性,那么在删除的时候一定要加上path属性,否则删除的是当前目录下设¾|®çš„cookie倹{€?/p>

         另外在设¾|®cookie时还能够讄¡½®ä¸¤ä¸ªå±žæ€§ï¼Œåˆ†åˆ«æ˜¯domainå’ŒsecureåQŒdomain代表讄¡½®cookie的访问域åQŒä¸‹é¢æˆ‘¾l™å‡ºdomain基本理论ã€?br /> 例如åQ?a target="_blank" eventslistuid="e11">www.google.comå’Œgmail.google.comž®±æ˜¯ä¸¤ä¸ªä¸åŒçš„主机名。默认情况下åQŒä¸€ä¸ªä¸»æœÞZ¸­åˆ›å¾çš„cookie在另一个主æœÞZ¸‹æ˜¯ä¸èƒ½è¢«è®‰K—®çš„,但可以通过domain参数来实现对其的控制åQŒå…¶è¯­æ³•格式为:(x¨¬)
           document.cookie="name=value;domain=cookieDomain";
           以googleä¸ÞZ¾‹åQŒè¦å®žçŽ°è·¨ä¸»æœø™®¿é—®ï¼Œå¯ä»¥å†™äØ“(f¨´)åQ?
           document.cookie="name=value;domain=.google.com";
           ˜q™æ ·åQŒæ‰€æœ‰google.com下的ä¸ÀLœºéƒ½å¯ä»¥è®¿é—®è¯¥cookieã€?因䨓(f¨´)˜q™ä¸ªå‚数我没有测试过也没有用˜q‡ï¼Œæ‰€ä»¥å¦‚果当用到˜q™ä¸ªå‚æ•°åQŒå¯ä»¥å‚考上面的理论部分ã€?/p>

         secure代表该cookie是否是安全的。如果设¾|®äº†è¯¥å±žæ€§ï¼Œåªæœ‰ä½¿ç”¨https协议才能够访问到
该cookie.

         下面¾l™å‡ºcookie的完整格å¼?br />           name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]
          名称=<å€?gt;[; expires=<日期>][; domain=<åŸ?gt;][; path=<路径>][; 安全]



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÂÞÔ´ÏØ| ÓñϪÊÐ| ÎÚÀ¼ÏØ| Ê¯Â¥ÏØ| ¶ýÔ´ÏØ| μÄÏÊÐ| ¸ß´¾ÏØ| ·ïÉ½ÏØ| ºîÂíÊÐ| ÈÙ³ÉÊÐ| ¹óÖÝÊ¡| °×ɳ| ¿Ëʲ¿ËÌÚÆì| ÇåÐìÏØ| Îå³£ÊÐ| º×ÇìÏØ| ÍпËÑ·ÏØ| кÓÏØ| Ô«ÇúÏØ| ¼¯°²ÊÐ| Èð°²ÊÐ| ºÚÉ½ÏØ| ¶«³ÇÇø| °¢°ÓÏØ| ¹âÉ½ÏØ| ÓÎÏ·| ¸»ÃñÏØ| ºÓ³ØÊÐ| ¹ÁÔ´ÏØ| ÐÂÁúÏØ| ³ÐµÂÏØ| ÕþºÍÏØ| Ä«ÓñÏØ| ¹âÔóÏØ| ¿ª½­ÏØ| ÐÂÎÅ| ¸¡É½ÏØ| ´ó°²ÊÐ| Çì°²ÏØ| ÎåÁ«ÏØ| ¸ßÃÜÊÐ|