1、 cookie虽然是由一个网页所创建,但并不只是创建cookie的网页才能读取该cookie。在默认情况下,与创建cookie的网页在同一目录或子目录下的所有网页都可以读取该cookie。但如果在这个目录下还有子目录,要使在子目录中也可以访问,则需要使用path参数设置cookie,语法如下:
document.cookie="name=value; path=cookieDir";
如果要使cookie在整个网站下可用,可以将cookieDir指定为根目录,示例如下:
document.cookie="userId=320; path=/";
上面所说都指的是在同一个目录中的访问,可是要想在不同虚拟目录中访问则要另外想办法来解决这个问题。但是path不能解决在不同域中访问cookie的问题。在默认情况下,只有和设置cookie的网页在同一个Web服务器的网页才能访问该网页创建的cookie。但可以通过domain参数来实现对其的控制,其语法格式如下:
document.cookie="name=value; domain=cookieDomain";
如下面这段代码,就演示了怎样设置cookie路径和域。
01 <script lnguage="javascript"> //JavaScript代码开始标签
02 function setCookie() //自定义函数
03 {
04 var the_name = prompt("请输入要设的cookie的值,""); //一个信息框
05 var the_cookie ="cookie_puss=" + escape(the_name) + ";" ; //编写cookie的键与值
06 var the_cookie = the_cookie+ "path=/;"; //设置cookie的路径
07 var the_cookie = the_cookie + "domain=localhost;"; //设置cookie的域
08 document.cookie =the_cookie; //将这些信息写入cookie变量中去
09 alert("设置成功!") //最后提示用户设置成功
10 }
11 setCookie(); //调用函数
12 </script>
注意:在使用时一定要注意路径的设置方法,若路径信息有误将无法访问。
2、cookie.setPath("/test/test2");
删除指定路径上的Cookie,(不设置该路径,默认为删除当前路径Cookie;)
3、注意:假设路径结构如下
test/test2/test345/test555/test666
a.相同键名的Cookie(值可以相同或不同)可以存在于不同的路径下。
b. 删除时,如果当前路径下没有键为"key"的Cookie,则查询全部父路径,检索到就执行删除操作(每次只能删除一个与自己最近的父路径Cookie) FF.必须指定与设定cookie时使用的相同路径来删除改cookie,而且cookie的键名不论大写、小写或大小混合都要指定路径。IE.键名小写时,如果当前路径为/test/test2,如果找不到再向上查询/test、/test555、/test345,如果还找不到就查询 /(/test555/test666不查询) 。键名大小写混合或大写时,不指定路径则默认删除当前路径,并且不向上查询。
c.读取Cookie时只能读取直接父路径的Cookie。如果当前路径为/test/test2,要读取的键为“key”。当前路径读取后,还要读取/test,/test读取后,还要读取/ 。
d.在做Java的web项目时,由于一般的Web服务器(如Tomcat或Jetty)都用Context来管理不同的Web Application,这样对于每个Context有不同的Path,在一个Server中有多个Web Application时要特别小心,不要设置Path为/的Cookie,容易误操作(当然前提是域名相同) 。